graph.write_pdf(“iris.pdf”) AttributeError: 'l

2019-01-14 00:03发布

My code is follow the class of machine learning of google.The two code are same.I don't know why it show error.May be the type of variable is error.But google's code is same to me.Who has ever had this problem?

This is error

[0 1 2]
[0 1 2]
Traceback (most recent call last):
  File "/media/joyce/oreo/python/machine_learn/VisualizingADecisionTree.py", line 34, in <module>
    graph.write_pdf("iris.pdf")
AttributeError: 'list' object has no attribute 'write_pdf'
[Finished in 0.4s with exit code 1]
[shell_cmd: python -u "/media/joyce/oreo/python/machine_learn/VisualizingADecisionTree.py"]
[dir: /media/joyce/oreo/python/machine_learn]
[path: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games]

This is code

import numpy as np
from sklearn.datasets import load_iris
from sklearn import tree

iris = load_iris()
test_idx = [0, 50, 100]

# training data
train_target = np.delete(iris.target, test_idx)
train_data = np.delete(iris.data, test_idx, axis=0)

# testing data
test_target = iris.target[test_idx]
test_data = iris.data[test_idx]

clf = tree.DecisionTreeClassifier()
clf.fit(train_data, train_target)

print test_target
print clf.predict(test_data) 

# viz code
from sklearn.externals.six import StringIO
import pydot
dot_data = StringIO()
tree.export_graphviz(clf,
        out_file=dot_data,
        feature_names=iris.feature_names,
        class_names=iris.target_names,
        filled=True, rounded=True,
        impurity=False)

graph = pydot.graph_from_dot_data(dot_data.getvalue())
graph.write_pdf("iris.pdf")

9条回答
爱情/是我丢掉的垃圾
2楼-- · 2019-01-14 00:55

I tried the previous answers and still got a error when running the script Therefore, I just used pydotplus

import pydotplus

and install the "graphviz" by using:

sudo apt-get install graphviz

Then it worked for me, and I added

graph = pydotplus.graph_from_dot_data(dot_data.getvalue())
graph.write_pdf("iris.pdf")

Thanks to the previous contributors.

查看更多
男人必须洒脱
3楼-- · 2019-01-14 00:58

I think you are using newer version of python. Please try with pydotplus.

import pydotplus
...
graph = pydotplus.graph_from_dot_data(dot_data.getvalue())
graph.write_pdf("iris.pdf")

This should do it.

查看更多
ゆ 、 Hurt°
4楼-- · 2019-01-14 00:58
import pydotplus
...
graph = pydotplus.graph_from_dot_data(dot_data.getvalue())
graph.write_pdf("iris.pdf")

I have Python 3.6.0 |Anaconda 4.3.1 and get error:

File "C:\Anaconda\lib\site-packages\pydotplus\graphviz.py", line 1960, in create 'GraphViz\'s executables not found')

InvocationException: GraphViz's executables not found

查看更多
登录 后发表回答