pythonで決定木を使う

pythonで決定木を使う機会があり,scikit-learnというライブラリを使ったのだが,日本語リファレンスが皆無だったのでまとめておく.

scikit-learnのインストール

easy_install -U scikit-learn

これでおk.

ちなみに,scikit-learnというだけあって,scipyが依存ライブラリ.

決定木の構築

以下のようにする.

In [1]: from sklearn import tree

In [2]: samples = [[0, 0], [1, 1]] # サンプルデータ

In [3]: values = [0, 1] # クラス

In [4]: clf = tree.DecisionTreeClassifier()

In [5]: clf = clf.fit(samples, values)

新しいデータに対する予測

新たなデータがどのクラスに属するかを予測する.

In [6]: clf.predict([2, 2])
Out[6]: array([1])

この場合だと,[0, 0]をクラス0,[1, 1]をクラス1として決定木を構築すると,[2, 2]はクラス1に分類されますよということ.

Graphvizで可視化もできるみたい.

集合知プログラミングに決定木を実装する章があるので,時間のある人は自分で実装してみるといかもしれない.アルゴリズムもあまり難しくない.

集合知プログラミング

集合知プログラミング


ちなみに,決定木は多クラス分類に強いイメージ.2クラスならSVM,多クラスなら決定木というように使い分けるといいのかな…