2

我正在玩决策树算法并尝试绘制树。但是 IDE 报告了以下错误:

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。谢谢你的帮助。

4

3 回答 3

3

pyparsing您的错误似乎是由于安装顺序不正确,您缺少库的一部分 ( )。

这里这里

对初学者来说很明显但对新手来说不是:解决方法是在安装 pydot(或依赖于 pydot 的包)之前安装 pyparsing < 2.0.0。

$ pip install pyparsing==1.5.7

解决方案似乎是先删除pydotand pyparsing,然后先安装pyparsing,然后pydot.

要安装的版本将来很可能会发生变化,因此目前您似乎需要运行以下内容:(取自这个可爱的答案)

pip uninstall pyparsing
pip install -Iv https://pypi.python.org/packages/source/p/pyparsing/pyparsing-1.5.7.tar.gz#md5=9be0fcdcc595199c646ab317c1d9a709
pip install pydot
于 2016-03-07T15:29:27.623 回答
2

对我来说,我发现一个很好的提示是安装pydotplus,因为它与 pyparsing v2.0 及更高版本兼容。它还具有可以与 Anaconda 安装的 graphviz 一起使用的优点。我正在使用 Anaconda v2.4.1,并在使用 condas 安装的 Windows 7 x64 和 Graphviz 2.38 上。

于 2016-03-25T00:04:44.193 回答
2

我刚刚将我的更新pydot1.2.3,错误消失了。

sudo pip install -U pydot
于 2017-05-15T11:18:38.997 回答