iPythonノート のPython 2iPython(のpython 2) - はImportError:という名前のモジュールがmodel_selection
このライン不満:
from sklearn.model_selection import train_test_split
はなぜ働くの選択をモデル化されていませんか?
iPythonノート のPython 2iPython(のpython 2) - はImportError:という名前のモジュールがmodel_selection
このライン不満:
from sklearn.model_selection import train_test_split
はなぜ働くの選択をモデル化されていませんか?
この問題を解決するには、実際に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
モジュールを使用する必要がありますあなたの好みのパッケージ管理システムと一緒に。
私はこれが役に立ちそうです。
あなたの作業ディレクトリに 'sklearn.py'という名前のスクリプトがありますか?おそらく、あなたは実際の 'sklearn'パッケージの代わりにそのスクリプトからインポートしています。 – Abdou
私の知る限りではありません – user1072337
'import sklearn; print(sklearn .__ file __) 'を実行し、出力を確認します。出力があなたのpythonバージョンの 'site-packages'を指している場合、' sklearn'のインストール方法に間違いがあります。その場合は、おそらく再インストールする必要があります。さもなければ、あなたの出力が 'site-packages'以外のものであれば、あなたはモジュールそのものではないどこかのスクリプトをインポートしています。そのような場合の迅速な修正は、最初にコンソールを終了し、そのスクリプトの名前を変更してコンソールに戻って再試行することです。 – Abdou