2016-10-02 8 views
3

iPythonノート のPython 2iPython(のpython 2) - はImportError:という名前のモジュールがmodel_selection

このライン不満:

from sklearn.model_selection import train_test_split 

はなぜ働くの選択をモデル化されていませんか?

+1

あなたの作業ディレクトリに 'sklearn.py'という名前のスクリプトがありますか?おそらく、あなたは実際の 'sklearn'パッケージの代わりにそのスクリプトからインポートしています。 – Abdou

+0

私の知る限りではありません – user1072337

+1

'import sklearn; print(sklearn .__ file __) 'を実行し、出力を確認します。出力があなたのpythonバージョンの 'site-packages'を指している場合、' sklearn'のインストール方法に間違いがあります。その場合は、おそらく再インストールする必要があります。さもなければ、あなたの出力が 'site-packages'以外のものであれば、あなたはモジュールそのものではないどこかのスクリプトをインポートしています。そのような場合の迅速な修正は、最初にコンソールを終了し、そのスクリプトの名前を変更してコンソールに戻って再試行することです。 – Abdou

答えて

5

この問題を解決するには、実際にsklearnパッケージをインポートするかどうか、そして作業ディレクトリのどこかに保存されたsklearn.pyという名前のスクリプトだけでなく、まず調べる必要があります。 Pythonがモジュールをインポートする方法は、名前空間で変数を見つける方法(「Local」、「Enclosed」、「Global」、「Built-in」)と多少似ています。この場合、Pythonは最初に現在のディレクトリを探し、次にsite-packagesを探してモジュールのインポートを開始します。現在の作業ディレクトリを探して、インポートしようとしているモジュールと同じ名前のpythonスクリプトを見つけたら、実際のモジュールではなくそのスクリプトをインポートします。

あなたは通常、実際のモジュールは、その__file__または__path__属性をチェックすることにより、インポートされているかどうかを調べることができます。これらのprint文の出力を確認

import sklearn 

print(sklearn.__file__) 
print(sklearn.__path__) 

は、インポートされたパッケージは、モジュールあなたであるかどうかを教えてくれますあなたの作業ディレクトリのどこかに嘘をついているか、ちょうどいくつかのスクリプトがあります。もし出力があなたのPythonバージョンのsite-packagesを指していないなら、あなたはモジュール自体ではないどこかのスクリプトをインポートしています。あなたの迅速な修正は、まずコンソールを終了し、.pyスクリプトとそのコンパイル済みバージョン(.pycファイル)の名前を変更し、コンソールに戻って再試行してください。

しかし、出力があなたのpythonバージョンのsite-packagesを指している場合、最初にパッケージがどのようにインストールされたかに問題があります。その場合は、おそらくそれを更新または再インストールする必要があります。

これは特に、使用しているsklearnのバージョンの問題であることが判明しました。 model_selectionモジュールのsklearnには、0.18+のバージョンが用意されています。

from sklearn.cross_validation import train_test_split 

あなたはまた、単にパッケージの最新バージョンにアップグレードすることができます:あなたは、バージョン番号(sklearn.__version__0.18より低いを使用している場合は、代わりにmodel_selectionモジュールの古いcross_validationモジュールを使用する必要がありますあなたの好みのパッケージ管理システムと一緒に。

私はこれが役に立ちそうです。

関連する問題