【问题标题】:NameError: global name 'dot_parser' is not defined / PydotPlus / Pyparsing 2 / AnacondaNameError:未定义全局名称“dot_parser”/PydotPlus/Pyparsing 2/Anaconda
【发布时间】:2019-01-08 09:55:59
【问题描述】:

我正在尝试关注谷歌的机器学习视频之一,我特别卡在这一点上 (https://youtu.be/tNa99PG8hR8?t=265)

我正在使用 Spyder / Python 2.7:

from sklearn.datasets import load_iris
import numpy as np
from sklearn import tree

iris = load_iris()
test_idx = [0,50,100]

#Training Data
train_target = np.delete(iris.target, test_idx)
train_data = np.delete(iris.data, test_idx, axis=0)

#testing data
test_target = iris.target[test_idx]
test_data = iris.data[test_idx]

clf = tree.DecisionTreeClassifier()
clf.fit(train_data, train_target)

print test_target
print clf.predict(test_data)

#Copied code
from sklearn.externals.six import StringIO
import pydot 
dot_data = StringIO()  
tree.export_graphviz(clf, out_file=dot_data,  
                         feature_names=iris.feature_names,  
                         class_names=iris.target_names,  
                         filled=True, rounded=True,  
                         special_characters=True)  
graph = pydot.graph_from_dot_data(dot_data.getvalue())  
graph.write_pdf("iris.pdf")

输出是

NameError: global name 'dot_parser' is not defined

我按照说明使用 PydotPlus 和 Pyparsing 2: NameError: global name 'dot_parser' is not defined

来自conda list我得到

pyparsing 2.0.3 py27_0 defaults
pydotplus 2.0.2 <pip> defaults

【问题讨论】:

    标签: python machine-learning


    【解决方案1】:

    我发现把代码改成

    import pydotplus
    

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

    工作正常。

    【讨论】:

      【解决方案2】:

      在学习谷歌机器学习教程时,我遇到了和你一样的问题。为了解决这个问题,我执行了以下操作:(PS:我使用的是 Linux Mint 17.3 Cinammon。)

      先决条件:
      在教程的第 1 集中,讲师 (JoshGordon) 建议您从 Anaconda 安装 scikit-learn。
      教程链接:https://www.youtube.com/watch?v=cKxRvEZd3Mw
      Anaconda 下载链接:https://www.continuum.io/downloads
      这正是我所做的,我为我的系统安装了 Anaconda。 (Linux Mint)

      安装 anaconda 后,我打开终端并输入以下命令:

      conda install graphviz
      conda install pydot
      

      然后我再次运行脚本,它工作了。

      PS: 我认为它有效,因为当您尝试运行脚本时,python 会在 Anaconda 中查找 pydot 和 graphviz 库,但问题是,它们似乎没有捆绑在一起有了它,你必须先安装它们。

      【讨论】:

        猜你喜欢
        • 2016-06-21
        • 2020-12-13
        • 2015-07-19
        • 2011-04-27
        • 1970-01-01
        • 2013-08-14
        • 2014-10-24
        • 2012-05-29
        相关资源
        最近更新 更多