19

我正在尝试遵循scikit-learn(线性回归)的本教程

我已经通过 scikit 安装了pip install -U scikit-learn,我使用 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'

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

任何人都可以帮忙吗?

4

10 回答 10

27

这个问题的另一个原因(不是 OP 代码的问题)——但让我印象深刻的一个原因是 python 不会自动导入子包或模块,除非包开发人员明确这样做。并且sklearn不会自动导入它的子包,所以如果你有

import sklearn 
diabetes = sklearn.datasets.load_diabetes()

那么你会得到

AttributeError: module 'sklearn' has no attribute 'datasets'

这是一个高度误导的错误消息,因为sklearn确实有一个名为的子包datasets——您只需要显式地导入它

import sklearn.datasets 
diabetes = sklearn.datasets.load_diabetes()
于 2017-06-13T08:06:43.800 回答
18

好的..终于找到了..在这里发布以防有人遇到同样的问题。

我在不同的目录中有另一个版本的 sklearn(可能是因为 apt-get install)。它以某种方式部分安装,但它是加载的。

确保查看pip脚本的输出以查看它在哪里安装包,当你从 python 加载它时,检查它从sklearn.__path__哪里获取它。

于 2013-05-26T06:50:25.667 回答
8

这对我有用:

from sklearn.datasets import make_moons
于 2016-05-30T07:18:53.560 回答
4

我遇到了同样的问题,但后来我意识到我的程序名称是sklearn.py. 如果有人看到这种类型的错误,还要检查您的程序名称是否与包名称不同,否则您将得到module object has no attribute error,如问题中所示。

于 2017-01-01T07:27:24.367 回答
1

似乎从 sklearn 加载的包是来自分发库的包,而不是从 pip 安装的包。我(debian)的解决方案是重新安装 pip 包。这可以通过以下方式检查:

import sklearn
sklearn.__path__

如果这显示/usr/lib/python/,那么它是否使用分布。

通过卸载并重新安装 sklearn 解决了该问题。

 $ pip uninstall scikit-learn
 $ pip install scikit-learn
于 2018-01-21T16:48:31.957 回答
1

我遇到了类似的问题,这篇文章是:

"*** AttributeError: 'GaussianProcessRegressor' 对象没有属性 '_y_train_mean"

当我更新 scikit-learn 并加载一个腌制模型并尝试使用该模型进行预测时。我只需要重新训练模型,它就解决了我的问题。

于 2018-07-05T16:54:10.593 回答
0

试试这个:

from sklearn.datasets import load_diabetes
diabetes = load_diabetes()
于 2018-07-24T12:43:55.900 回答
0

我遇到了类似的问题,并尝试根据Nick Coghlan 的这篇文章进行故障排除,因为建议的答案似乎都没有解决我的问题。

我掉进了所谓的“双重进口陷阱”。我所拥有的是这样的:

import sklearn
import sklearn.preprocessing

通过删除其中一个导入并重置我的工作区,我设法解决了这个问题。

于 2019-08-27T08:14:41.430 回答
0

我通过插入以下代码行解决了这个问题:

import sklearn 
from sklearn.linear_model import LinearRegression
于 2020-02-11T09:18:12.377 回答
0

我已将 python 文件命名为 sklearn.py,这就是我出现此 ATTRIBUTEERROR 的原因。重命名并解决了它。

于 2021-04-07T17:59:23.720 回答