web-dev-qa-db-ja.com

scikit-learnを使用できません-「AttributeError: 'module' object has no attribute ...」

私はフォローしようとしています このチュートリアル のscikit-learn(線形回帰)。

pip install -U scikit-learnからscikitをインストールしました。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'

パッケージを間違って使用している(ただし、チュートリアルからコピーした)か、何かを間違ってインストールした(パッケージが正常にロードされた)ようです。

誰か助けてもらえますか?

17
Zach Moshe

OK ..ようやく見つかりました..誰かが同じ問題に巻き込まれる場合に備えて、ここに投稿してください。

別のディレクトリにsklearnの別のバージョン(おそらくapt-get installが原因)がありました。どういうわけか部分的にインストールされましたが、ロードされたものでした。

pipスクリプトの出力を確認して、パッケージをどこにインストールするかを確認してください。Pythonからロードする場合は、sklearn.__path__をチェックして、どこから取得するかを確認してください。

17
Zach Moshe

この問題の別の原因(OPのコードの問題ではありません)-しかし、私を獲得したのは、pythonは、パッケージ開発者が明示的に行わない限り、サブパッケージまたはモジュールを自動的にインポートしないことです) 、そしてsklearnはそのサブパッケージを自動的にインポートしないので、

_import sklearn 
diabetes = sklearn.datasets.load_diabetes()
_

その後、あなたは得るでしょう

_AttributeError: module 'sklearn' has no attribute 'datasets'
_

これは非常に誤解を招くエラーメッセージですsklearnにはdatasetsと呼ばれるsubpackageがあるため、明示的にインポートする必要があります

_import sklearn.datasets 
diabetes = sklearn.datasets.load_diabetes()
_
21
Roko Mijic

これは私のために働きました:

from sklearn.datasets import make_moons
8
Neuro

同じ問題に直面しましたが、プログラム名がsklearn.py。このタイプのエラーが発生した場合は、プログラム名がパッケージ名と同じでないことも確認してください。そうでない場合は、module object has no attribute error、質問のように。

4
Vijay P R

Sklearnからロードされたパッケージは、ディストリビューションライブラリからのパッケージであり、pipからインストールされたものではないようです。私(debian)の解決策は、pipパッケージを再インストールすることでした。これは以下で確認できます:

import sklearn
sklearn.__path__

これが/usr/lib/python/、それはディストリビューションを使用していますか。

この問題は、sklearnをアンインストールして再インストールすることで解決しました。

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

この問題を解決するには、次のコード行を挿入します。

import sklearn 
from sklearn.linear_model import LinearRegression
0
Ibrahim

私は同様の問題に遭遇し、この投稿で:

"*** AttributeError: 'GaussianProcessRegressor' object has no attribute '_y_train_mean"

scikit-learnを更新して、ピクルスモデルをロードし、そのモデルを使用して予測しようとしたとき。モデルを再トレーニングするだけで問題は解決しました。

0
Sters Merlin

これを試して:

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

私は同様の問題を抱えており、提案された回答のどれも私の問題を解決していないようだったので、Nick Coghlanによる この記事 に基づいてトラブルシューティングを試みました。

いわゆる「Double Import trap」に陥った。私が持っていたものは次のようなものでした:

import sklearn
import sklearn.preprocessing

インポートの1つを削除してワークスペースをリセットすることで、問題を解決することができました。

0
Billal Naseem