train_test_split
関数を使用して次のように記述しようとしています。
from sklearn.model_selection import train_test_split
そしてこれが原因
ImportError: No module named model_selection
どうして?そして、どのように克服するのですか?
回答:
のバージョンが間違っていると思います。scikit-learn
同様の状況がGitHubで説明されています。以前(以前v0.18
)train_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を使用する場合など、別の方法を使用して更新するようにしてください。
import sklearn
、sklearn
(うん、単語だけ)と入力できsklearn.__version__
ますか?修正されていますが、問題の原因を知ることは興味深いことです。
conda update scikit-learn
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
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
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でも起こりました。
sklearn 0.20.0の最新の安定版リリースでは、train_test_splitはcross_validationではなくmodel_selectionの下にあります
sklearnのバージョンを確認するには:
輸入sklearn印刷(sklearn。バージョン)0.20.2
sklearnのバージョンが低すぎますmodel_selection
。0.18.1でインポートされているため、sklearnのバージョンを更新してください。