本記事では、Scala言語を用いた機械学習ライブラリであるsmile(Statistical Machine Intelligence and Learning Engine)の使い方について解説します。
Scalaとは
ScalaはJVM上で動作するオブジェクト指向プログラミング言語です。Javaとの親和性が高く、Javaで書かれたライブラリを利用したプログラムをScalaでも利用することができます。
smileとは
smileはScala言語で書かれた機械学習ライブラリです。主にクラスタリング、回帰分析、分類問題などの機械学習のタスクに用いられます。また、グラフやヒートマップ作成などのビジュアリゼーションの機能も利用できます。自然言語処理や信号処理などの数学・統計学的処理も実装されており、非常に協力なライブラリです。実行処理も、R、Python、Sparkなどと比較し、格段に高速であると紹介されています。
機械学習で最も利用されているプログラミング言語はPythonであり、代表的なライブラリはscikit-learnが挙げられます。
smileやScalaを利用する大きな理由は、大規模データセットの高速処理です。
smileの使い方
smileのインストール
build.sbt
に以下のコードを一行追加し、ビルドし、smileをインストールします。
libraryDependencies += "com.github.haifengl" % "smile-core" % "3.0.1"
グラフによるビジュアリゼーション
以下のコードを所定のファイルで作成し、実行してください。ここでは、2つのグラフ描画を行っています。 plotIris
では、機械学習で有名なデモデータ、アヤメのデータを可視化したものです。ココでダウンロードし、dataというディレクトリに保存してください。
import smile.plot.show
import smile.read
import smile.stat.distribution._
import smile.plot.swing._
import smile.plot.Render._
object Plot {
def plotIris(): Unit = {
val iris = read.arff("data/iris.arff")
val canvas = plot(iris, "sepallength", "sepalwidth", "class", '*')
canvas.setAxisLabels("sepallength", "sepalwidth")
show(canvas)
}
def plotGauss(): Unit = {
val gauss = new GaussianDistribution(0.0, 1.0)
val data = (0 until 1000) map { _: Int => gauss.rand }
show(qqplot(data.toArray))
}
def main(args: Array[String]): Unit = {
plotGauss()
plotIris()
}
}
すると、以下の2つのウィンドウが表示されます。Pythonのmatplotlibと異なり、グラフをズームしたりインタラクティブに確認することができます。
まとめ
本記事では、Scala言語を用いた機械学習ライブラリであるsmileの使い方について解説しました。今後、smileを使ったより高度な機能や活用事例を紹介します。
Leave a Reply