web-dev-qa-db-fra.com

ne peut pas utiliser scikit-learn - "AttributeError: l'objet 'module' n'a pas d'attribut ..."

J'essaie de suivre ce tutoriel de scikit-learn (régression linéaire).

J'ai installé scikit via pip install -U scikit-learn, j'utilise python 2.7 et Ubuntu 13.04

Lorsque j'essaie d'exécuter les premières lignes de code, je reçois une erreur qui se produit chaque fois que j'essaie d'exécuter quoi que ce soit avec scikit-learn.

import pylab as pl
import numpy as np
from sklearn import datasets, linear_model

# Load the diabetes dataset
diabetes = datasets.load_diabetes()

Je reçois ce qui suit: 

AttributeError: 'module' object has no attribute 'load_diabetes'

Quand j'essaye:

regr = linear_model.LinearRegression()

Je reçois :

AttributeError: 'module' object has no attribute 'LinearRegression'

Il me semble que c'est soit que j'utilise le package incorrect (mais que j'ai copié à partir de leur tutoriel), soit que j'ai installé quelque chose de mal (mais que le package a été chargé avec succès).

Quelqu'un peut-il aider?

14
Zach Moshe

OK .. Je l'ai enfin trouvé .. Le poster ici au cas où quelqu'un tomberait dans le même problème.

J'ai eu une autre version de sklearn (probablement à cause d'apt-get install) dans un répertoire différent. Il était partiellement installé mais c'était celui qui avait été chargé.

Veillez à consulter le résultat de votre script pip pour savoir où il installe le package. Lorsque vous le chargez à partir de python, cochez sklearn.__path__ pour savoir où il le prend.

17
Zach Moshe

Une autre cause de ce problème (pas le problème avec le code de l'OP) - mais celui qui m'a causé - est que python n'importe pas automatiquement les sous-packages ou les modules, sauf si cela est explicitement fait par le développeur du paquet. Et sklearn n’importe pas automatiquement ses sous-packages, donc si vous avez 

import sklearn 
diabetes = sklearn.datasets.load_diabetes()

alors vous obtiendrez 

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

Ceci est un message d'erreur très trompeur , parce que sklearn a un subpackage appelé datasets - il vous suffit de l'importer explicitement

import sklearn.datasets 
diabetes = sklearn.datasets.load_diabetes()
15
Roko Mijic

Cela a fonctionné pour moi:

from sklearn.datasets import make_moons
8
Neuro

J'ai rencontré le même problème, mais j'ai alors réalisé que mon nom de programme était sklearn.py. Si quelqu'un voit ce type d'erreur, vérifiez également que le nom du programme n'est pas identique au nom du paquet, sinon vous obtiendrez module object has no attribute error, comme dans la question.

4
Vijay P R

Il semble que le paquet chargé depuis sklearn soit celui de la bibliothèque de distribution et non celui installé depuis pip. La solution pour moi (debian) consistait à réinstaller le paquet pip. Ceci peut être vérifié avec:

import sklearn
sklearn.__path__

Si cela indique /usr/lib/python/, utilisez-vous la distribution?.

Le problème a été résolu en désinstallant et en réinstallant sklearn.

 $ pip uninstall scikit-learn
 $ pip install scikit-learn
0
eleijonmarck

J'ai rencontré un problème similaire et ce post avec: 

"*** AttributeError: l'objet 'GaussianProcessRegressor' n'a pas d'attribut '_y_train_mean" 

lorsque j'ai mis à jour scikit-learn, j'ai chargé un modèle mariné et tenté de prédire à l'aide de ce modèle. J'avais simplement besoin de recycler le modèle et cela a résolu mon problème.

0
Sters Merlin

Essaye ça: 

from sklearn.datasets import load_diabetes
diabetes = load_diabetes()
0
Salah