ImportError:sklearn.cross_validationという名前のモジュールはありません


174

Ubuntu 14.04でPython 2.7を使用しています。scikit-learn、numpy、matplotlibを次のコマンドでインストールしました。

sudo apt-get install build-essential python-dev python-numpy \
python-numpy-dev python-scipy libatlas-dev g++ python-matplotlib \
ipython

しかし、これらのパッケージをインポートすると:

from sklearn.cross_validation import train_test_split

それは私にこのエラーを返します:

ImportError: No module named sklearn.cross_validation

私は何をする必要がありますか?


sklearnとanacondaを正しくインストールした場合、モジュール名が間違っている可能性があります。
CKM

11
繰り返しますが、これからはsklearn.model_selectionを使わなければなりません。cross_validationは、sklearn 20+以降で使用できません
ミハルミクリシュ

回答:


583

これは、cross_validationサブモジュールの名前の変更と廃止に関連している必要がありますmodel_selection。に置き換えcross_validationてみてくださいmodel_selection


8
これが間違いなく選択された答えになるはずです
rhys_jsk

これは受け入れられる答えになるはずです。機能するだけでなく、投稿時の投票数は200から4を超えています。
Jerry Destremps、

sklearn開発者が下位互換性のためにエイリアスを設定しなかったのはなぜですか?また、その古いバージョンのドキュメントには、このリファクターが示されているはずです:scikit-learn.org/0.16/modules/generated/…
flow2k

魅力的に働いた
omah94

139

train_test_splitがmodel_selectionに追加されました。入力するだけです:

from sklearn.model_selection import train_test_split

それはうまくいくはずです


43

クロスセレクションはもうアクティブではないと思います。代わりにモデル選択を使用する必要があります。あなたはそれを実行するように書くことができます、from sklearn.model_selection import train_test_split

それでおしまい。


これが答えです。あなたは素晴らしいです。
Biswajit Panday

35

Anacondaがインストールされていることを確認してから、condaを使用してvirtualenvを作成します。これにより、すべてのインポートが機能します

Python 2.7.9 |Anaconda 2.2.0 (64-bit)| (default, Mar  9 2015, 16:20:48) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://binstar.org
>>> from sklearn.cross_validation import train_test_split

いいえ、持っていません。Anacondaをインストールする必要がありますか?
arthurckl 2015年

それをインストールすることをお勧めしますが、sudo apt-get install python-sklearnを試すこともできます。
Richard Rublev 2015年

7
@DimaLituievの答えは、ここでの正解です。この問題は主に名前の変更に関連しており、実際に存在しないパッケージではありません。
Amrinder Arora、

2
これは必ずしも必要ではありません。名前が変更された1つのパッケージだけに新しい環境をインストールすることを提案していますが、このソリューションはやり過ぎです。ディマのソリューションは正解としてマークする必要があります
MuhsinFatih

彼が「インポートsklearn」を最初に機能させたかどうかについては、この質問に対処する必要があったと思います。動作する場合、おそらくこれは命名の問題ではありません。
ju。

24

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

使うだけ

from sklearn.model_selection import train_test_split

うまくいくと思います。



15

sklearn.cross_validationが廃止されたことが原因である可能性があります。sklearn.cross_validationをsklearn.model_selectionに置き換えてください

Ref- https://github.com/amueller/scipy_2015_sklearn_tutorial/issues/60


1
あなたの答えは同じスレッドで以前に与えられたものと同じであるようです。回答を改善できると思われる場合は、同じ質問に新しい回答をするのではなく、編集することを検討てください。
ヨハン

@ヨハンどうやら私は他の答えを見ませんでした。必要に応じて、回答を削除することもできます。
nantitv

12

データセットをトレーニングセットとテストセットに分割する

from sklearn.model_selection import train_test_split

2
ayat ullah sonyの回答と同じ解決策。
Eric Aya

9

過去:(from sklearn.cross_validation このパッケージは0.20以降、0.18バージョンでは非推奨になり、に変更されましたfrom sklearn import model_selection)。

現在: from sklearn import model_selection

例2:

過去:(from sklearn.cross_validation import cross_val_score廃止予定のバージョン0.18)

現在: from sklearn.model_selection import cross_val_score


7

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

ただ変える

sklearn.cross_validation

sklearn.model_selection


4

さまざまなバージョンを実行する必要があるコードがある場合は、次のようなことを行うことができます。

import sklearn
if sklearn.__version__ > '0.18':
    from sklearn.model_selection import train_test_split
else:
    from sklearn.cross_validation import train_test_split

ただし、パッケージのバージョンを文字列として比較しているため、これは理想的ではありません。通常は機能しますが、常に機能するとは限りません。をインストールしたい場合packagingは、これははるかに優れたアプローチです。

from packaging.version import parse
import sklearn
if parse(sklearn.__version__) > parse('0.18'):
    from sklearn.model_selection import train_test_split
else:
    from sklearn.cross_validation import train_test_split

2

cross_validationは少し前に廃止されました。model_selectionで切り替えてみてください


より多くの価値を与えるために、回答に説明を追加してください。
Zeina

2

train_test_splitはモジュールの一部であるsklearn.model_selectionため、モジュールをmodel_selection

コード:

from sklearn.model_selection import train_test_split

0

scikit-learnを最新の互換バージョンにダウングレードする必要があります。そして、これはコンダ環境をアクティブにした後に行うことができます。次のコマンドを使用して、scikit-learnをダウングレードします。

pip uninstall scikit-learn
pip install scikit-learn==0.19.2

または

scikit-learnをダウングレードしたくない場合。次に、「cross_validation」の名前が新しいバージョンのscikit-learnでは非推奨になり、新しいanacondaバージョン内の「model_selection」に置き換えられたことをすべて知っていました。したがって、警告またはエラーが発生する可能性があります。

これを回避するには、以下を置き換えるだけです。

from sklearn.cross_validation import train_test_split

from sklearn.model_selection import train_test_split 

これが問題の解決に役立つことを願っています。

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