サポートベクターマシン(SVM)についての概要は Wikipedia でも見てください。 スパムの分類、ユーザーのクラスタリング、他何か色々なものを分類する用途に使われます。今回はSVMを使うための環境構築を行った際のメモです。

libsvmについて

libsvmはChih-Chung Changさん・Chih-Jen Linさんが開発したSVMのライブラリです。様々なSVMタイプ・カーネル関数、また細かくオプションも指定できるので、SVMを使う必要がある場合は、とりあえずこれを選んでおけば困ることは少ないと思います。

libsvmのインストール

$ brew search libsvm
libsvm

brewにあった。ラッキー。

$ brew install libsvm

本体のインストール完了。

$ svm-train
Usage: svm-train [options] training_set_file [model_file]
options:
-s svm_type : set type of SVM (default 0)
        0 -- C-SVC              (multi-class classification)
...

動いた。がこれだとPython用バインディングがインストールできなかった。残念。

libsvmのPython用バインディングのインストール

無いなら、pipで公式のバインディングをインストールするためのsetup.pyを自分で書いてしまえばいいじゃない。てな訳で書いた奴をgithubに上げといた(libsvm-python)。 問題はsetup.py書いたのが初めてなので、これであってるのかどうか自信がない。とりあえず以下のコマンドでインストールできます。

$ pip install -e git+https://github.com/Salinger/libsvm-python.git#egg=libsvm-python

動作確認

テスト用のコード。

そして実行。

$ python libsvm_test.py 
.*.*
optimization finished, #iter = 9
nu = 0.298326
obj = -0.596685, rho = 3.000257
nSV = 3, nBSV = 0
Total nSV = 3
Accuracy = 75% (3/4) (classification)
[Result]
[-1.0, 1.0, -1.0, -1.0]
(75.0, 1.0, 0.3333333333333333)
[[-1.3527684585781998], [3.038557720585867], [-1.9331234989121904], [-2.4115929900464406]]

問題なく動くのを確認できた。自分で書いたsetup.pyもとりあえず問題ないっぽい?