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

Zac*_*she 16 python-2.7 scikit-learn

我正在尝试遵循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()
Run Code Online (Sandbox Code Playgroud)

我得到以下内容:

AttributeError: 'module' object has no attribute 'load_diabetes'
Run Code Online (Sandbox Code Playgroud)

当我尝试:

regr = linear_model.LinearRegression()
Run Code Online (Sandbox Code Playgroud)

我明白了:

AttributeError: 'module' object has no attribute 'LinearRegression'
Run Code Online (Sandbox Code Playgroud)

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

有人可以帮忙吗?

Rok*_*jic 19

这个问题的另一个原因(不是OP代码的问题) - 但是让我感到困惑的是 - python不会自动导入子包或模块,除非包开发人员明确地完成.并且sklearn不会自动导入其子包,所以如果你有

import sklearn 
diabetes = sklearn.datasets.load_diabetes()
Run Code Online (Sandbox Code Playgroud)

那你会得到的

AttributeError: module 'sklearn' has no attribute 'datasets'
Run Code Online (Sandbox Code Playgroud)

这是一个非常误导性的错误消息,因为sklearn它有一个名为的子包datasets - 您只需要显式导入它

import sklearn.datasets 
diabetes = sklearn.datasets.load_diabetes()
Run Code Online (Sandbox Code Playgroud)

  • 这正是问题所在,我安装和卸载它很多次,但它没有工作,但导入子包直接工作,:( (2认同)

Zac*_*she 17

好的..最后找到它.发布它在这里万一有人会遇到同样的问题.

我在另一个目录中有另一个版本的sklearn(可能是因为apt-get install).它部分安装,但它是一个加载的.

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


Neu*_*uro 8

这对我有用:

from sklearn.datasets import make_moons
Run Code Online (Sandbox Code Playgroud)