【问题标题】:ImportError: cannot import name 'tree' for sklearnImportError:无法为 sklearn 导入名称“树”
【发布时间】:2016-12-02 02:39:19
【问题描述】:

我最近使用 pip 安装了 Scipy、Numpy 和 Scikit-learn,但是当我运行下面的程序时

from sklearn import tree

features = [[140, 1], [130, 1], [150, 1], [170, 1]] #input
labels = [0, 0, 1, 1] #output

clf = tree.DecisionTreeClassifier()  
clf = clf.fit(features, labels) #fit = find patterns in data

print (clf.predict([[160, 0]]))

shell 打印这个错误

Traceback (most recent call last):
  File "C:/Machine Learning/sklearn.py", line 1, in <module>
    from sklearn import tree
  File "C:/Machine Learning\sklearn.py", line 1, in <module>
    from sklearn import tree
ImportError: cannot import name 'tree'

有谁知道如何解决这个问题?我已经尝试卸载并重新安装它,但我得到了同样的错误。提前谢谢了!

【问题讨论】:

  • 您将文件称为sklearn.py。别这样了。
  • 我改了名字,还是一样的错误:/
  • 删除任何可能已从您的文件编译的sklearn.pyc 文件,重新启动 Python,然后重试。

标签: python numpy scikit-learn importerror


【解决方案1】:

我有同样的问题。使用 sublime text 3 作为编辑器并构建。在我的情况下很容易解决。

我的工作文件也被命名为“sklearn.py”,所以当我尝试“导入 sklearn”时,它正在导入在当前工作目录中找到的自己的文件 - 没有错误。但是当我尝试“从 sklearn 导入树”时它失败了。

只需将我的工作文件程序的名称更改为其他名称即可解决问题。

谢谢。

【讨论】:

    【解决方案2】:

    解决方案是将“机器学习”文件夹下的“sklearn.py”重命名为任何其他名称,而不是“sklearn.py”。

    为什么?这就是 Python 模块搜索序列的机制。尝试将这些行添加到您的“sklearn.py”中:

    import sys
    print(sys.path)
    

    你会发现输出列表的第一个元素总是一个空字符串,这意味着当前目录在模块搜索中具有最高优先级。在“C:\Machine Learning”文件夹运行from sklearn import tree 将导入本地同名“sklearn.py”作为“sklearn”模块,而不是全局导入机器学习模块。

    【讨论】:

    • 我已更改名称并将其保存在另一个目录中,该目录包含所有站点包。但我得到同样的错误。我是使用 sklearn 的新手,大约一个月前才开始学习 python
    • 好的。您能否检查您的工作区中是否有任何*.pyc 文件(py2)或__pycache__ 文件夹(py3)并将它们全部删除?您也可以编写一个新的.py 文件,尝试import sklearn 然后print(sklearn) 并在此处发布结果吗?
    猜你喜欢
    • 2017-03-23
    • 2020-06-04
    • 2016-01-16
    • 1970-01-01
    • 2019-05-27
    • 2013-02-22
    • 1970-01-01
    相关资源
    最近更新 更多