Scalaにもnumpy, scipyのような数値計算ライブラリがあります。
ScalaNLPというレポジトリで登録されています。
github.com
では、どんなものがあるか調べてみます。
breeze
Breezeは、数値計算ライブラリです。
numpyのようなもので、行列計算などを操作するためのライブラリがメインです。
他のライブラリの基盤ともなっています。
- breeze.linalg: breezeで扱う行列など型を定義しています。
- breeze.io: CSVからの読み込みなどを行うIOの関数を定義しています。
- breeze.numerics: absやsin, cosなど基本的な関数を定義しています。
- breeze.signal: デジタル信号の関数を定義しています。
- breeze.stats: 乱数生成のライブラリです。
例えば、標準正規分布に基づく乱数であれば、以下の様に出力することができます。
import breeze.stats.distributions._ val mu = 0 val sigma = 1 println(Gaussian(mu, sigma).draw)
breeze-viz
グラフなどplotして可視化するライブラリです。
いわゆるmatplotlib的なものですね。
このライブラリは、breezeに戻したようです。
他にも以下の様なビジュアライゼーションライブラリもあります。
sameersingh/scalaplot · GitHub
また以下ライブラリは、ScalaNLPには含まれていませんが、wikiにて紹介されているものです。
Junto
parthatalukdar/junto · GitHub
Label Propagationのアルゴリズムが実装されています。
ただしこちらは最後のコミットが2014年の3月なので、全然メンテされていないですね。。
やはりRやPythonに比べると、ライブラリの充実度は圧倒的に低いですね。。
Scalaの場合は、Javaの資産をそのまま使えますが、kそれでも劣っているように感じます。