Python:NameError:未定义全局名称'dot_parser'

Ger*_*ten 5 python

Python对我来说相当新鲜.

我正在尝试运行"使用Scikit进行Python机器学习"一书中的泰坦机器学习示例.使用决策树的分类工作正常(clf已正确定义)但如果我想可视化决策树(请参阅下面的代码片段),我收到以下错误消息(从IPython复制).

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-34-15b1b4a5d909> in <module>()
      3 dot_data = StringIO.StringIO()
      4 tree.export_graphviz(clf, out_file = dot_data, feature_names = ['PClass', 'AgeFill', 'Gender'])
----> 5 graph = pydot.graph_from_dot_data(dot_data.getvalue())
      6 graph.write_png('titanic.png')

C:\Users\885299\AppData\Local\Continuum\Anaconda32\lib\site-packages\pydot.pyc in graph_from_dot_data(data)

    218     """
    219 
--> 220     return dot_parser.parse_dot_data(data)
    221 
    222 
NameError: global name 'dot_parser' is not defined
Run Code Online (Sandbox Code Playgroud)

有人能帮助我吗?

我使用的代码片段(类似于本书)是:

import pydot, StringIO

dot_data = StringIO.StringIO()
tree.export_graphviz(clf, out_file = dot_data, feature_names = ['Class', 'Age', 'Gender'])
graph = pydot.graph_from_dot_data(dot_data.getvalue())
graph.write_png('titanic.png')

from IPython.core.display import Image
Image(filename = 'titanic.png')
Run Code Online (Sandbox Code Playgroud)

amc*_*ack 0

github 上似乎有一个相关问题。建议确保您“已安装 pyparser 库并更新它们”。不过,我很确定他们指的是pyparsing图书馆。

您可以通过运行来安装 pyparsingpip install pyparsing

您可以通过运行来更新 pyparsingpip install -U pyparsing

此外,一个相关的 stackoverflow 问题建议卸载 pyparsing,然后重新安装 pyparsing 和 pydot。