Не может использовать 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'
Мне кажется, что я либо неправильно использую пакет (но я скопировал их учебник), либо я установил что-то неправильно (но пакет успешно загружен).
Может ли кто-нибудь помочь?
Ответы
Ответ 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
удалив один из вариантов импорта и сбросив рабочее пространство, мне удалось решить проблему.