このツールは決定木分析の実行と可視化を行うためのツールです. 現在は回帰決定木分析のみに対応しています.
-
numpy
$ pip install numpy
-
pandas
$ pip3 install pandas
-
scikit-learn
$ pip3 install scikit-learn
$ git clone https://github.com/i10bucchi/DecisionTreeTool.git
$ python3 tree.py [-p] [-o] [-c] [-d] [-p]
-
[-h --help] コマンドオプションと使用例を表示します.
-
[-p --path_csv] 学習, テストデータとして使用するcsvファイルのパスを渡します. このオプションは必ず指定しなければなりません.
-
[-o --objective_variable] 目的変数を指定します. csvファイルのカラム名と同じものを指定する必要があります. このオプションは必ず指定しなければなりません.
-
[-c --categolical_variable] ダミー変数化を行いたい変数を指定します. 指定されない場合は自動でダミー変数化されます. 詳しくはpandas.get_dummyの使用を確認ください. 複数の変数を指定する場合は","を使用して繋げてください. csvファイルのカラム名と同じものを指定する必要があります.
-
[-d --depth] 決定木分析の深さを指定します. デフォルトは5となっています.
-
[-p --print] 分析結果の表示をブラウザで行うかhtmlファイルの出力で行うか指定します. このオプションを指定した場合, htmlファイルを標準出力で出力します. > などを使用して適宜htmlファイルへの流し込みをおこなってください.
以下のコマンドはtree.pyがあるディレクトリ内での実行を想定しています.
$ python3 tree.py -p ./data.csv -o 変数名1 -c 変数名2,変数名3 -d 7
$ python3 tree.py -p ./data.csv -o 変数名2 -p > result.html
csvファイルは1列目をインデックスとしてプログラムに読み込まれます. よって以下のように整形してください.
data.csv
index | 変数名1 | 変数名2 | 変数名3 | ... |
---|---|---|---|---|
... | ... | ... | ... | ... |
決定木分析結果の見方を説明します. -pオプションを指定してhtmlファイルを作成した方はブラウザにてファイルを開いてください.
-
ノードの持つ条件はノード上部に表示されます.
-
ノードの色はノードの持つデータの平均値を表します. 高いほど暗く, 低いほど明るくなるように設定されています. ヒートマップと同様の見方となります.
-
各ノードをクリックすることで, 対象のノードが持つデータのヒストグラムが確認可能です.
-
各ノードに対してマウスオーバーすることでノードの以下の情報が表示されます.
- サンプル数(sample)
- 左子ノードへの分割サンプル数(sample_l)
- 右子ノードへの分割サンプル数(sample_r)
- 平均値(mu)
-
ノードをつなぐ線(リンク)は色によって以下の意味を持ちます.
- 灰色: 未収束
- 緑色: 収束しており, その結果が信頼できる
- 赤色: 収束しているが, その結果が信頼できない
- 決定木の下にある線グラフは収束し信頼できるノードのデータからガウス分布の最優推定を実行し得たガウス分布です.
- 各線をクリックすることで対象のノード情報を表示することができます.