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で可視化もできるみたい.
集合知プログラミングに決定木を実装する章があるので,時間のある人は自分で実装してみるといかもしれない.アルゴリズムもあまり難しくない.
- 作者: Toby Segaran,當山仁健,鴨澤眞夫
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/07/25
- メディア: 大型本
- 購入: 91人 クリック: 2,220回
- この商品を含むブログ (270件) を見る
ちなみに,決定木は多クラス分類に強いイメージ.2クラスならSVM,多クラスなら決定木というように使い分けるといいのかな…