web-dev-qa-db-ja.com

JupyterノートブックでのScikit Decision Tree Figureの表示

私は現在、小さなプロジェクトとしてJupyterノートブックを学習する機械を作成しており、私の決定木を展示したいと思いました。ただし、私が見つけることができるすべてのオプションは、グラフィックをエクスポートしてから画像をロードすることです。これはかなり複雑です。

したがって、グラフィックをエクスポートしてロードすることなく、私の決定木を直接表示する方法があるかどうかを尋ねたかったです。

10
Jürgen Erhardt

graphviz (graphviz)と呼ばれる単純なライブラリーがありますあなたはあなたの決定木を見るために使うことができます。これでグラフィックをエクスポートする必要はありません。それはあなたのためにツリーのグラフィックを直接開くでしょう、そして後でそれを保存したいかどうかを決定することができます。次のように使用できます。

import graphviz
from sklearn.tree import DecisionTreeClassifier()
from sklearn import tree

clf = DecisionTreeClassifier()
clf.fit(trainX,trainY)
columns=list(trainX.columns)
dot_data = tree.export_graphviz(clf,out_file=None,feature_names=columns,class_names=True)
graph = graphviz.Source(dot_data)
graph.render("image",view=True)
f = open("classifiers/classifier.txt","w+")
f.write(dot_data)
f.close()
 _

vIEW = TRUEのために、あなたのグラフはレンダリングされたらすぐに開くでしょうが、それを望んでいて、グラフを保存したいだけで、View = falseを使用できます。

お役に立てれば

4
Laksh Matai

Scikit-Learnバージョン21.0の時点で(2019年5月〜約5月)、Scikit-Learn'sを使用してMatploTLIBでプロットすることができます tree.plot_tree GraphVizに頼らずに.

import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn import tree

X, y = load_iris(return_X_y=True)

# Make an instance of the Model
clf = DecisionTreeClassifier(max_depth = 5)

# Train the model on the data
clf.fit(X, y)

fn=['sepal length (cm)','sepal width (cm)','petal length (cm)','petal width (cm)']
cn=['setosa', 'versicolor', 'virginica']

# Setting dpi = 300 to make image clearer than default
fig, axes = plt.subplots(nrows = 1,ncols = 1,figsize = (4,4), dpi=300)

tree.plot_tree(clf,
           feature_names = fn, 
           class_names=cn,
           filled = True);

# You can save your plot if you want
#fig.savefig('imagename.png')
 _

以下のものに似たものはあなたのJupyterノートブックに出力されます。
[。____。 enter image description here

コードはこれから適応されました POST