ImportError:无法为sklearn导入名称“tree”

时间:2016-07-27 22:00:12

标签: python numpy scikit-learn importerror

我最近使用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'

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

2 个答案:

答案 0 :(得分:1)

解决方案是将“Machine Learning”文件夹下的“sklearn.py”重命名为任何其他名称,但不是“sklearn.py”。

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

import sys
print(sys.path)

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

答案 1 :(得分:1)

我有同样的问题。使用sublime text 3作为编辑器和构建。就我而言,非常简单。

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

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

谢谢。