7

私はscikitドキュメントの決定木のチュートリアルに従っています。私は持っていますが、メソッドpydotplus 2.0.2がないと言っていますwrite-以下のエラー。私は今それでしばらく苦労してきました、何かアイデアをください? どうもありがとう!

from sklearn import tree
from sklearn.datasets import load_iris

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

from IPython.display import Image

dot_data = tree.export_graphviz(clf, out_file=None)
import pydotplus

graph = pydotplus.graphviz.graph_from_dot_data(dot_data)

Image(graph.create_png())

そして私のエラーは

    /Users/air/anaconda/bin/python /Users/air/PycharmProjects/kiwi/hemr.py
Traceback (most recent call last):
  File "/Users/air/PycharmProjects/kiwi/hemr.py", line 10, in <module>
    dot_data = tree.export_graphviz(clf, out_file=None)
  File "/Users/air/anaconda/lib/python2.7/site-packages/sklearn/tree/export.py", line 375, in export_graphviz
    out_file.write('digraph Tree {\n')
AttributeError: 'NoneType' object has no attribute 'write'

Process finished with exit code 1

- - - アップデート - - -

で修正を使用するとout_file、別のエラーがスローされます。

 Traceback (most recent call last):
  File "/Users/air/PycharmProjects/kiwi/hemr.py", line 13, in <module>
    graph = pydotplus.graphviz.graph_from_dot_data(dot_data)
  File "/Users/air/anaconda/lib/python2.7/site-packages/pydotplus/graphviz.py", line 302, in graph_from_dot_data
    return parser.parse_dot_data(data)
  File "/Users/air/anaconda/lib/python2.7/site-packages/pydotplus/parser.py", line 548, in parse_dot_data
    if data.startswith(codecs.BOM_UTF8):
AttributeError: 'NoneType' object has no attribute 'startswith'

----更新 2 -----

また、別の問題を解決する以下の私自身の答えを参照してください

4

6 に答える 6

7

問題は、パラメータout_fileを に設定していることですNone

documentationを見ると、に設定すると、ファイルを直接None返し、stringファイルを作成しません。もちろん、 a にはメソッドstringがありませんwrite

したがって、次のようにします。

dot_data = tree.export_graphviz(clf)
graph = pydotplus.graphviz.graph_from_dot_data(dot_data)
于 2016-10-10T12:02:41.177 に答える
3

の適切なパスを指定した後でも、メソッドgraph_from_dot_data()が機能しませんでしたout_file

代わりにgraph_from_dot_fileメソッドを使用してみてください:

graph = pydotplus.graphviz.graph_from_dot_file("iris.dot")
于 2016-10-22T12:15:18.613 に答える
2

今朝、同じエラーに遭遇しました。私はpython 3.xを使用していますが、これが問題の解決方法です。

from sklearn import tree
from sklearn.datasets import load_iris
from IPython.display import Image
import io

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

# Let's give dot_data some space so it will not feel nervous any more
dot_data = io.StringIO()
tree.export_graphviz(clf, out_file=dot_data)
import pydotplus

graph = pydotplus.graphviz.graph_from_dot_data(dot_data.getvalue())
# make sure you have graphviz installed and set in path
Image(graph.create_png())

Python 2.x を使用している場合は、"import io" を次のように変更する必要があると思います。

import StringIO

と、

dot_data = StringIO.StringIO()

それが役に立てば幸い。

于 2017-07-13T15:14:02.157 に答える
0

また、もう1つの問題は、backend私のGraphvizの設定でした!! ここでうまく解決されます。その設定ファイルを検索してバックエンドを変更するかmpl.use("TkAgg")、コメントで提案されているコードを変更するだけです。pydotplot実行可能ファイルが見つからないというエラーが発生しただけだったGraphvizので、homebrew 経由で Graphviz を再インストールしました。brew install graphvizこれで問題が解決し、プロットを作成できるようになりました!!

于 2016-10-31T12:35:40.303 に答える