不能使用scikit-learn - “AttributeError:'module'对象没有属性......”

时间:2013-05-24 21:27:48

标签: python-2.7 scikit-learn

我正在尝试关注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'

在我看来,我要么使用错误的包(但我已经从他们的教程中复制了),或者我安装了错误的东西(但是包装已成功加载)。

有人可以帮忙吗?

10 个答案:

答案 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 的原因。 重命名并解决它。