Scalaの機械学習ライブラリsmile

with コメントはまだありません

本記事では、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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください