我正在尝试关注this tutorial scikit-learn(线性回归)。
我已经通过pip install -U scikit-learn
安装了scikit,我使用python 2.7和Ubuntu 13.04
当我尝试运行第一行代码时,我得到一个错误,每当我尝试使用scikit-learn运行任何东西时都会发生错误。
import pylab as pl
import numpy as np
from sklearn import datasets, linear_model
# Load the diabetes dataset
diabetes = datasets.load_diabetes()
我得到以下内容:
AttributeError: 'module' object has no attribute 'load_diabetes'
当我尝试:
regr = linear_model.LinearRegression()
我明白了:
AttributeError: 'module' object has no attribute 'LinearRegression'
在我看来,我要么使用错误的包(但我已经从他们的教程中复制了),或者我安装了错误的东西(但是包装已成功加载)。
有人可以帮忙吗?
答案 0 :(得分:18)
这个问题的另一个原因(不是OP代码的问题) - 但是让我得到的是 - python不会自动导入子包或模块,除非包开发人员明确地完成了。并且sklearn
不会自动导入其子包,因此如果您有
import sklearn
diabetes = sklearn.datasets.load_diabetes()
然后你会得到
AttributeError: module 'sklearn' has no attribute 'datasets'
这是一个极具误导性的错误消息,因为sklearn
确实有一个名为datasets
的子包 - 您只需要明确导入< / p>
import sklearn.datasets
diabetes = sklearn.datasets.load_diabetes()
答案 1 :(得分:17)
好的..最后找到它。发布在这里,万一有人会遇到同样的问题。
我在另一个目录中有另一个版本的sklearn(可能是因为apt-get install)。它是以某种方式部分安装的,但它是被加载的那个。
确保查看pip
脚本的输出以查看它在何处安装软件包,以及从python加载它时,请检查sklearn.__path__
以查看它从何处获取。
答案 2 :(得分:8)
这对我有用:
from sklearn.datasets import make_moons
答案 3 :(得分:4)
我遇到了同样的问题但后来我意识到我的程序名是sklearn.py
。如果任何人看到这种类型的错误,还要检查您的程序名称是否与包名称不同,否则您将获得module object has no attribute error
,如问题所示。
答案 4 :(得分:0)
似乎从sklearn加载的包是分发库中的包,而不是从pip安装的包。我(debian)的解决方案是重新安装pip包。可以通过以下方式检查:
import sklearn
sklearn.__path__
如果显示/usr/lib/python/
,那么它是否正在使用该分发。
卸载并重新安装sklearn解决了这个问题。
$ pip uninstall scikit-learn
$ pip install scikit-learn
答案 5 :(得分:0)
我遇到了类似的问题,这篇帖子中包含:
“ *** AttributeError:'GaussianProcessRegressor'对象没有属性'_y_train_mean”
当我更新scikit-learn并加载一个腌制的模型并尝试使用该模型进行预测时。我只需要重新训练模型即可解决问题。
答案 6 :(得分:0)
尝试一下:
from sklearn.datasets import load_diabetes
diabetes = load_diabetes()
答案 7 :(得分:0)
我遇到了类似的问题,并根据Nick Coghlan的this article尝试了故障排除,因为建议的答案似乎都无法解决我的问题。
我陷入了所谓的“ 双重进口陷阱”。我的经历是这样的:
import sklearn
import sklearn.preprocessing
通过删除其中一个导入并重置我的工作区,我设法解决了这个问题。
答案 8 :(得分:0)
我通过插入以下代码行解决了这个问题:
getJSModule
答案 9 :(得分:0)
我已将 python 文件命名为 sklearn.py,这就是我出现此 ATTRIBUTEERROR 的原因。 重命名并解决它。