2
3

More than 5 years have passed since last update.

【決定木学習モデル】Pythonのscikit-learn使て、アヤメ(iris)データセットを分類

Last updated at Posted at 2019-05-17

自分のブログの記事で、ここも投稿します。
ブログの方が読みやすいと思います。

site: http://kura.gq/machine-learning/decision-tree-python-sklearn/133/05/

課題の目的
Pythonのscikit-learn使て、決定⽊学習モデルを実行します。具体的には、決定⽊学習モデルを習って、デモのアヤメ(iris)データセットを分類して、結果を表示します。

解説
アイリス(iris)データセットとは
アイリスのデータセットはよく知られたデータセットです。sklearnパッケージの中には、このデータセットがあります。「¥sklearn¥datasets¥data¥iris.csv」で見つけました。
image.png

このデータセットには、データポイントが150個で、各データポイントには4つの変数があります。AからDまでは、ガクの長さ、ガクの幅、花弁の長さ、花弁の幅ということです。Eは花の種類で、この中で、0はsetosa、1はversicolor、2はvirginicaです。

scikit-learnの機能
scikit-learn のDecisionTreeClassifierは、決定⽊学習モデル使て、データセットに対して分類できるクラスです。 入力は「n_samples、n_features」を使用して、「n_samples」はトレーニングサンプルで、「n_features」はクラスラベルです。

例の実装
環境構築
Python3の中に、scikit-learnをインストールします。結果の可視化のため、Graphvizをインストールします。

具体的には、Graphvizはここに(https://graphviz.gitlab.io/download/)ダウンロードして、インストールします。

そして、パッケージのscikit-learn、Graphviz、pydotplusをインストールします。pycharmの場合は、ここまではいいです。
image.png

パケージをロード

from sklearn.datasets import load_iris
from sklearn import tree
import pydotplus
import os
os.environ["PATH"] += os.pathsep + 'C:¥Program Files(x86)¥Graphviz2.38¥bin¥'

アイリスのデータを読み込み、決定⽊学習モデルを使用してモデルを習って取得します。

iris = load_iris()
clf = tree.DecisionTreeClassifier().fit(iris.data, iris.target)

モデルをドットファイルiris.dotに保存します。

with open("iris.dot", 'w') as f:
f = tree.export_graphviz(clf, out_file=f)

結果の可視化

dot_data = tree.export_graphviz(clf, out_file=None)
graph = pydotplus.graph_from_dot_data(dot_data)
graph.write_pdf("iris.pdf")

結果
image.png

結果の解説:

X[0]からX[3]までは、ガクの長さ、ガクの幅、花弁の長さ、花弁の幅です。sampleは、このノード上のデータポイントの数です。valueは、このノード上のデータポイントの種類です。例えば、[0, 47, 1]とは、setosaは0個、versicolorは47個、virginicaは1個です。

決定木の意味は、次の例で説明されています。
image.png

データポイント一つにとって、もし:
花弁の長さ <= 2.45 は False、
そして、花弁の幅 <= 1.75 は False、
そして、花弁の長さ <= 4.85 は True、
そして、ガクの幅 <= 3.10 は True、
このデータポイントはvirginicaです。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3