ImportError:model_selectionという名前のモジュールがありません


89

train_test_split関数を使用して次のように記述しようとしています。

from sklearn.model_selection import train_test_split

そしてこれが原因

ImportError: No module named model_selection

どうして?そして、どのように克服するのですか?


2
少なくとも最後の10の質問で、回答を受け入れていないことに気づきました。最も役立つ回答を受け入れることは、回答者と将来あなたの質問を検討している人々に役立つことを忘れないでください。
linusg 2016年

回答:


181

のバージョンが間違っていると思います。scikit-learn同様の状況がGitHubで説明されています。以前(以前v0.18train_test_splitは、cross_validationモジュールにありました:

from sklearn.cross_validation import train_test_split

ただし、現在はmodel_selectionモジュール内にあります。

from sklearn.model_selection import train_test_split

そのため、最新バージョンが必要になります。

少なくともバージョンにアップグレードするには、次の手順を0.18実行します。

pip install -U scikit-learn

(またはpip3、Pythonのバージョンによっては)。別の方法でインストールした場合は、Anacondaを使用する場合など、別の方法を使用して更新するようにしてください。


7
これは私にはうまくいきませんでしたが、FarhardMalekiのソリューションである「condaupdatescikit-learn」はうまくいきました。
Alex Kinman 2017

あなたが与えたpipコマンドを実行しましたが、pipをアップグレードするように求めるエラーがスローされました。次に、pipをアップグレードして再実行すると、sklearnをアップグレードする必要がないことがわかります。ハットがそうではないと思っていても、すでに最新バージョン(0.17)を使用しています。口論するのではなく、情報を共有しようとするだけです。
Alex Kinman 2017

@AlexKinman Python 2および3がインストールされている場合は、必ず「rightpip 」コマンドを使用してください。あなたはvenvsを持っていないか、正しいものにいますか?これは奇妙に聞こえますが、Pythonシェルを開いてimport sklearnsklearn(うん、単語だけ)と入力できsklearn.__version__ますか?修正されていますが、問題の原因を知ることは興味深いことです。
linusg 2017

sklearnアウト[2]:<モジュールのsklearn」から'C:\ Users \ユーザーXYZ \のAppData \ローカル\コンティニュアム\ Anaconda2 \ libに\のsite-packages \ sklearn_ init_に.pyc'> sklearn .__ version__アウト[3]:「0.18 .2 'しかし、これはsklearnのCondaアップグレードを実行した後です
Alex

とにかく、それは今あなたのためにうまくいきます。私はAnacondaをあまり使用していませんが、pipと統合されていないと思います。回答を編集しました。すべてのAnacondaユーザーが知っています:)
linusg 2017


9

をインポートすると、この問題が発生しましたGridSearchCV

に変更されsklearn.model_selectionましたsklearn.grid_search


6

Jupyter Notebookの使用中に同じ問題が発生しましたが、Python 3で何を更新しても、conda、Jupyterにアクセスできませんでした。

import sklearn
print (sklearn.__version__)
0.17.1

scikit-learn-0.18.1を表示する

最後に、Anaconda3とJupyter Notebookを削除して、新しく再インストールしました。私はそれを機能させました。

http://ukitech.blogspot.com/2017/02/sklearnmodelselection.html


5

sklearnはありますか?そうでない場合は、次のようにします。

sudo pip install sklearn

sklearnをインストールした後

from sklearn.model_selection import train_test_split

正常に動作します


3

scikit-learnバージョン18.0をインストールするには、次の両方のコマンドを使用しました。

conda update scikit-learn

pip install -U scikit-learn

しかし、それは機能しません。「 'scikit-learn'をインストールできません。これはdistutilsでインストールされたプロジェクトであるため、どのファイルがそれに属しているかを正確に特定できず、部分的なアンインストールのみにつながる」という問題がありました。

最後に、次のコマンドを使用してインストールできます。

pip install --user --upgrade scikit-learn == 0.18.0


3

2016年9月下旬に、SciKit Learn 0.18がリリースされ、コードにわずかな変更が加えられました。SciKit Learn 0.18では、train_test_split関数がcross_validationではなくmodel_selectionからインポートされるようになりました。

from sklearn.cross_validation import train_test_split

に変更されました:

from sklearn.model_selection import train_test_split

同じことがGridSearchCVでも起こりました。


2

@linusgが言ったように、1つのオプションは、次のように相互検証をインポートすることです。

from sklearn import cross_validation
X_train,X_test,y_train,y_test = cross_validation.train_test_split(X,y,test_size=0.3)

2

sklearn 0.20.0の最新の安定版リリースでは、train_test_splitはcross_validationではなくmodel_selectionの下にあります

sklearnのバージョンを確認するには:

輸入sklearn印刷(sklearn。バージョン)0.20.2


1

@linusgからの前の回答にいくつかの情報追加します:

sklearnすべての変更のリリース履歴を保持します。時々それをチェックすることを考えてください。これがドキュメントへのリンクです。

バージョン0.18のドキュメントでわかるように、という名前の新しいモジュールが作成されましたmodel_selection。したがって、以前のバージョンには存在しませんでした。

更新sklearnすれば動作します!


0

sklearnのバージョンが低すぎますmodel_selection。0.18.1でインポートされているため、sklearnのバージョンを更新してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.