我如何绘制决策树? (TypeError:从点数据pydot开始的图表)

时间:2015-03-20 17:13:31

标签: python machine-learning scikit-learn decision-tree pydot

我是使用Python学习Scikit Learn,机器学习的新手。我试图使用决策树。我设法完成所有数据清理,分析等工作,直到我试图获得决策树图。

我正在使用Python 3.4和pyplot2。我有一个名为decision_tree的函数,它创建模型,然后调用一个函数(plot_classifier),让(clf)用这一行绘制它:

    dot_data = StringIO()
    export_graphviz(clf, out_file=dot_data)
    print(type(dot_data.getvalue()))
    graph = pydot.graph_from_dot_data(dot_data.getvalue())
    Image(graph.create_png())

此代码类似于Scikit精简代码。问题在于标记线。我适合我的模型并检查结果。他们还可以,但我无法弄清楚如何绘制树。我在控制台上得到了这个

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-66-900e97a70715> in <module>()
----> 1 decision_tree(feature_train, feature_test, label_train, label_test)

<ipython-input-3-c2e245caf6c8> in decision_tree(feature_train, feature_test,     label_train, label_test)
 17     print("Cantidad de aciertos: " + str(count) + "\n Cantidad de Elementos: " + str(len(pred)))
 18     print(no_match)
---> 19     plot_classifier(clf)
20     return accuracy
21 

<ipython-input-65-78f8ba2dc1ed> in plot_classifier(clf)
  3         export_graphviz(clf, out_file=dot_data)
  4         print(type(dot_data.getvalue()))
----> 5         graph = pydot.graph_from_dot_data(dot_data.getvalue())
  6         Image(graph.create_png())
  7 

C:\Anaconda3\lib\site-packages\pydot.py in graph_from_dot_data(data)
218     """
219 
--> 220     return dot_parser.parse_dot_data(data)
221 
222 

C:\Anaconda3\lib\site-packages\dot_parser.py in parse_dot_data(data)
508     top_graphs = list()
509 
--> 510     if data.startswith(codecs.BOM_UTF8):
511         data = data.decode( 'utf-8' )
512 

TypeError: startswith first arg must be str or a tuple of str, not bytes

我在互联网上检查错误msj,但答案是关于startswith行(这是在库上,我不认为当很多人有这个工作时会出现问题) 。我检查其他线路上的问题,找不到我遇到的问题。

任何人都可以帮我吗?我试过转换为stringtuple(即使您getvalues()已经返回string),但没有尝试。

1 个答案:

答案 0 :(得分:0)

我在Linux上遇到了同样的问题并解决了安装pydotplus及其依赖项的问题。

https://pypi.python.org/pypi/pydotplus

安装pydotplus及其依赖项后:

import pydotplus

graph = pydotplus.pydotplus.graph_from_dot_data(dot_data.getvalue())