【问题标题】:Creating PDF using pydot使用 pydot 创建 PDF
【发布时间】:2017-03-27 16:36:07
【问题描述】:

我从Visualizing a Decision Tree - Machine Learning 得到以下代码 将 numpy 导入为 np 从 sklearn.datasets 导入 load_iris 从 sklearn 导入树

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

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

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")

我试图在我的 python 3.5 中运行它,但我得到一个错误,说图形是一个列表。

Traceback (most recent call last):
  File "Iris.py", line 31, in <module>
    graph.write_pdf("iris.pdf")
AttributeError: 'list' object has no attribute 'write_pdf'
Press any key to continue . . .

graph怎么会有名单?

【问题讨论】:

    标签: python-3.5 stringio pydot


    【解决方案1】:

    我认为这是重复的,这里回答了同样的问题link

    因为pydot.graph_from_dot_data返回一个列表,所以解决方案是:

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

    这用Python 3.6.5 :: Anaconda, Inc.解决了我的问题

    【讨论】:

      【解决方案2】:

      Pydot 不能在 Python3 中工作。 您可以将 Pydotplus (graph.write_pdf("iris.pdf") AttributeError: 'list' object has no attribute 'write_pdf'") 用于 python3 而不是 pydot。

      虽然,youtube 上显示的代码是针对 Python2 的。所以,如果你使用Python2会更好。

      【讨论】:

        猜你喜欢
        • 2023-03-03
        • 2013-07-30
        • 2019-08-20
        • 2011-02-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多