Подтвердить что ты не робот

Не может использовать scikit-learn - "Объект AttributeError: 'module не имеет атрибута..."

Я пытаюсь следовать этот учебник 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'

Мне кажется, что я либо неправильно использую пакет (но я скопировал их учебник), либо я установил что-то неправильно (но пакет успешно загружен).

Может ли кто-нибудь помочь?

4b9b3361

Ответ 1

ОК.. Нашел его окончательно. Проводя его здесь, если кто-то попадет в ту же проблему.

У меня была другая версия sklearn (возможно, из-за установки apt-get) в другом каталоге. Он был частично установлен, но он загрузился.

Обязательно посмотрите на свой вывод pip script, чтобы посмотреть, где он устанавливает пакет, и когда вы загружаете его из python, проверьте sklearn.__path__, чтобы узнать, откуда он его берет.

Ответ 2

Другая причина этой проблемы (а не проблема с кодом 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()

Ответ 3

Это сработало для меня:

from sklearn.datasets import make_moons

Ответ 4

Я столкнулся с одной и той же проблемой, но потом понял, что мое имя программы sklearn.py. В случае, если кто-либо увидит этот тип ошибок, также проверьте, что имя программы не совпадает с именем пакета, иначе вы получите module object has no attribute error, как в вопросе.

Ответ 5

Похоже, что пакет, загруженный из sklearn, был из библиотеки распространения, а не из пакета, установленного из pip. Решение для меня (debian) состояло в том, чтобы переустановить пакет pip. Это можно проверить с помощью:

import sklearn
sklearn.__path__

Если это показывает /usr/lib/python/, то используется ли это распределение.

Проблема решена путем удаления и переустановки sklearn.

 $ pip uninstall scikit-learn
 $ pip install scikit-learn

Ответ 6

Я столкнулся с похожей проблемой, и этот пост:

"*** AttributeError: у объекта GaussianProcessRegressor нет атрибута _y_train_mean"

когда я обновил scikit-learn, загрузил маринованную модель и попытался предсказать, используя модель. Мне просто нужно было переучить модель, и это решило мою проблему.

Ответ 7

Попробуйте это:

from sklearn.datasets import load_diabetes
diabetes = load_diabetes()

Ответ 8

У меня была похожая проблема, и я попытался устранить неполадки на основе этой статьи Ника Коглана, поскольку ни один из предложенных ответов, казалось, не решил мою проблему.

Я попал в так называемую "двойную импортную ловушку". у меня было что-то вроде:

import sklearn
import sklearn.preprocessing

удалив один из вариантов импорта и сбросив рабочее пространство, мне удалось решить проблему.