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)
nak
Nakは、機械学習のためのライブラリです。
k-meansとロジスティック回帰、SVMがオリジナルで実装されています。
またbreeze-learnからの移植で、ナイーブベイズやニューラルネットもあります。
breeze-viz
グラフなどplotして可視化するライブラリです。
いわゆるmatplotlib的なものですね。
このライブラリは、breezeに戻したようです。
他にも以下の様なビジュアライゼーションライブラリもあります。
sameersingh/scalaplot · GitHub
また以下ライブラリは、ScalaNLPには含まれていませんが、wikiにて紹介されているものです。