我是使用 Scikit Learn、机器学习和 Python 工作的新手。我试图使用决策树。我设法完成了所有的数据清理、分析等工作,直到我尝试获得决策树图。
我正在使用 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
条线(那是在图书馆里,我认为当很多人有这个工作时不会有问题)。我检查其他线路的问题,也找不到我有问题的线路。
谁能帮我这个?我尝试了转换为string
or tuple
(即使您getvalues()
已经返回 a string
)之类的方法,但没有。