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'
パッケージを間違って使用している(ただし、チュートリアルからコピーした)か、何かを間違ってインストールした(パッケージが正常にロードされた)ようです。
誰か助けてもらえますか?
OK ..ようやく見つかりました..誰かが同じ問題に巻き込まれる場合に備えて、ここに投稿してください。
別のディレクトリにsklearnの別のバージョン(おそらくapt-get installが原因)がありました。どういうわけか部分的にインストールされましたが、ロードされたものでした。
pip
スクリプトの出力を確認して、パッケージをどこにインストールするかを確認してください。Pythonからロードする場合は、sklearn.__path__
をチェックして、どこから取得するかを確認してください。
この問題の別の原因(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()
_
これは私のために働きました:
from sklearn.datasets import make_moons
同じ問題に直面しましたが、プログラム名がsklearn.py
。このタイプのエラーが発生した場合は、プログラム名がパッケージ名と同じでないことも確認してください。そうでない場合は、module object has no attribute error
、質問のように。
Sklearnからロードされたパッケージは、ディストリビューションライブラリからのパッケージであり、pipからインストールされたものではないようです。私(debian)の解決策は、pipパッケージを再インストールすることでした。これは以下で確認できます:
import sklearn
sklearn.__path__
これが/usr/lib/python/
、それはディストリビューションを使用していますか。
この問題は、sklearnをアンインストールして再インストールすることで解決しました。
$ pip uninstall scikit-learn
$ pip install scikit-learn
この問題を解決するには、次のコード行を挿入します。
import sklearn
from sklearn.linear_model import LinearRegression
私は同様の問題に遭遇し、この投稿で:
"*** AttributeError: 'GaussianProcessRegressor' object has no attribute '_y_train_mean"
scikit-learnを更新して、ピクルスモデルをロードし、そのモデルを使用して予測しようとしたとき。モデルを再トレーニングするだけで問題は解決しました。
これを試して:
from sklearn.datasets import load_diabetes
diabetes = load_diabetes()
私は同様の問題を抱えており、提案された回答のどれも私の問題を解決していないようだったので、Nick Coghlanによる この記事 に基づいてトラブルシューティングを試みました。
いわゆる「Double Import trap」に陥った。私が持っていたものは次のようなものでした:
import sklearn
import sklearn.preprocessing
インポートの1つを削除してワークスペースをリセットすることで、問題を解決することができました。