我在玩決策樹算法並試圖繪製樹。然而,IDE報告以下錯誤:NameError:全局名稱'dot_parser'未定義
Couldn't import dot_parser, loading of dot files will not be possible.
<class 'pandas.core.frame.DataFrame'>
Traceback (most recent call last):
File "C:/Users/s152730/Desktop/exe1.py", line 70, in <module>
graph = pydot.graph_from_dot_data(test.getvalue())
File "C:\Python27\lib\site-packages\pydot.py", line 220, in graph_from_dot_data
return dot_parser.parse_dot_data(data)
NameError: global name 'dot_parser' is not defined
我不知道如何來處理這個問題,因爲我已經試過卸載並重新安裝pydot丹pyparsing,這是在其他的答案提出的,但事實並非如此幫幫我。
這裏是我的代碼:
from sklearn.tree import DecisionTreeClassifier
from sklearn.tree import ExtraTreeClassifier
from sklearn import tree
from sklearn.externals.six import StringIO
import pydot
from IPython.display import Image
test = StringIO()
tree.export_graphviz(clf, out_file=test, feature_names = attribute_names)
graph = pydot.graph_from_dot_data(test.getvalue())
graph.writepng('test.png')
image(filename = 'test.png')
我使用python2.7和PyCharm運行,操作系統是win8.1。 感謝您的幫助。
是否有堆棧跟蹤?或者也許減少代碼直到你得到所謂的[mcve]。這將有助於隔離問題。 –
只需更新堆棧跟蹤。我完全困惑如何解決這個問題。你可以幫我嗎? – Wulipapa
首先,嘗試通過隔離代碼的某些部分來創建[mcve],直到找到造成問題的確切行/模塊/包爲止。 Stacktrace已經有所幫助,因爲現在我們知道在調用'pydot.graph_from_dot_data'方法時這是一個問題。 –