読者です 読者をやめる 読者になる 読者になる

あれもPython,これもPython

Pythonで世界を包みたい

データサイエンスをPythonで試す(5_決定木)

今回はこの本の第七章の決定木です。

手を動かしながら学ぶ ビジネスに活かすデータマイニング

手を動かしながら学ぶ ビジネスに活かすデータマイニング

とうとう機械学習パートに入りました!

準備

import pandas as pd
import numpy as np
import Orange

結果の分岐を簡単に出力が可能なので、
Orangeで決定木を使ってみます。
(毎回Orangeを推している気がしてきた)

データの準備

cv = pd.read_csv("ch6_4_2.txt",sep=" ")
 d21 d22 d23 d24 d25 d26 cv
0   1   0   1   1   0   1   1
1   0   1   0   1   1   0   0
2   1   0   1   0   1   1   1

前回使ったデータと同じ、
行動とコンバージョンのログデータですね。

header = [Orange.feature.Discrete(h) for h in cv.columns]
for h in header:
    h.add_value("1")
    h.add_value("0")
    
domain = Orange.data.Domain(header)

func = lambda x:map(str,x)

cv2 = Orange.data.Table(domain,map(func,np.array(cv)))

こちらも前回と同じく、Orange用にデータを準備します。

Discreteのdomainを作り、
カテゴリーを用意しておきます。

学習と出力

learner = Orange.classification.tree.TreeLearner()
learner.max_depth = 3#深さを3層目まで
learner.simple_first = True#単一ノードから並べる
tree_classifier = learner(cv2)

データを与えて、学習させるだけです。

結果をツリー状にして見てみます。

print tree_classifier
d21=1
|    d22=1
|    |    d24=1: 1 (75.00%)
|    |    d24=0: 0 (100.00%)
|    d22=0
|    |    d24=1: 1 (88.68%)
|    |    d24=0: 1 (100.00%)
d21=0
|    d26=1
|    |    d22=1: 0 (90.00%)
|    |    d22=0: 1 (100.00%)
|    d26=0
|    |    d25=1: 0 (100.00%)
|    |    d25=0: 0 (80.00%)

こんな感じ。
今回は前回の知識で大分楽にできました。
Orangeの扱いにも慣れてきました。

ので、そろそろsklearnを使ってみたいところです(笑)

前回記事はこちら。

esu-ko.hatenablog.com