我最近使用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'
有谁知道如何解决这个问题?我已经尝试卸载并重新安装它,但我得到了同样的错误。提前谢谢了!
答案 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导入树”失败时。
只需将工作文件程序的名称更改为其他名称即可解决问题。
谢谢。