2017-08-31 16 views
1

に決定木をプロットするgraphvizのを使用して:残念ながら、私は次のエラーを把握することはできませんIs it possible to print the decision tree in scikit-learn?私は以前の記事に提示答え、次の午前のpython

from sklearn.datasets import load_iris 
from sklearn import tree 
from sklearn.externals.six import StringIO 
import pydot 

clf = tree.DecisionTreeClassifier() 
iris = load_iris() 

clf = clf.fit(iris.data, iris.target) 
tree.export_graphviz(clf, out_file='tree.dot') 
dot_data = StringIO() 
tree.export_graphviz(clf, out_file=dot_data) 
graph = pydot.graph_from_dot_data(dot_data.getvalue()) 
graph.write_pdf("iris.pdf") 

を:

'list' object has no attribute 'write_pdf' 

誰もが知っています生成されたtree.dotファイルの構造として、これを回避する方法はリストですか?

更新

私は、Webアプリケーションhttp://webgraphviz.com/を使用しようとしています。ただし、これは機能しますが、決定木の条件はクラスとともに表示されません。これらをtree.dotファイルに含める方法はありますか?

答えて

1

に収集したデータは、listのようです。

graph = pydot.graph_from_dot_data(dot_data.getvalue()) 
type(graph) 
<type 'list'> 

リストの最初の要素にのみ関心があります。 ですから、あなたが

(graph,) = pydot.graph_from_dot_data(dot_data.getvalue()) 

2にdot_data値を収集し、この2つの方法の次のいずれか、

1)変更ライン)を行うかにリスト全体を集めるちょうどに最初の要素を使用することができますここでpdf

graph[0].write_pdf("iris.pdf") 

に送信され、私はiris.pdf

01の出力として得るものです

enter image description here 更新

Exception: "dot.exe" not found in path.

があなたのコードに次のいずれかを使用するとhere

からgraphvizをインストールし、パス・エラーを回避するには。

import os 
os.environ["PATH"] += os.pathsep + 'C:/Program Files (x86)/Graphviz2.38/bin/' 

または、単にコントロールパネルのウィンドウのパスに以下を追加してください。 graphvizドキュメントを1として

C:\Program Files (x86)\Graphviz2.38\bin

、それはインストール時にWindowsパスに追加されません。

+0

あなたの答えをありがとう。私は似たような解決策で遊んでいましたが、 "dot.exe"というエラーがパスに見つかりませんでした。 "このエラーは私がGraphizをインストールしたことに起因すると考えています。 – Sjoseph

+1

パスのエラーについては、私の編集を参照してください。これがあなたの問題を解決すれば、ループを閉じる答えとして受け入れることを検討してください。 –

関連する問題