IPython的筆記本 的Python 2IPython的(蟒蛇2) - 導入錯誤:沒有名爲model_selection
模塊抱怨這一行:
from sklearn.model_selection import train_test_split
爲什麼不選型工作?
IPython的筆記本 的Python 2IPython的(蟒蛇2) - 導入錯誤:沒有名爲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__
屬性:
import sklearn
print(sklearn.__file__)
print(sklearn.__path__)
審查這些print語句的輸出會告訴你導入的包是否是模塊你在你的工作目錄的某處,或者只是一些腳本。如果輸出結果不指向Python版本的site-packages
,那麼您已經在某處導入了一些不是模塊本身的腳本。您的快速解決方案是首先退出控制檯,重命名.py
腳本及其編譯版本(.pyc
文件),然後返回到控制檯並重試。
但是,如果輸出指向您的python版本的站點包,那麼首先安裝包的方式會出現問題。在這種情況下,您可能需要更新或重新安裝它。
特別是這個問題,事實證明,問題出在您使用的版本sklearn
;因爲sklearn
中的model_selection
模塊在版本0.18+
中可用。如果您使用的是版本號(sklearn.__version__
)比0.18
低,那麼你將不得不使用舊cross_validation
模塊,而不是model_selection
模塊:
from sklearn.cross_validation import train_test_split
你也可以升級到包的最新版本與您首選的包裹管理系統。
我希望這是有幫助的。
你有沒有可能在你的工作目錄中有一個名爲'sklearn.py'的腳本?也許你是從該腳本導入而不是實際的'sklearn'軟件包。 – Abdou
我沒有據我所知 – user1072337
運行'import sklearn;打印(sklearn .__文件__)'並檢查輸出。如果輸出指向你的python版本的'site-packages',那麼你安裝'sklearn'的方式是錯誤的。在這種情況下,您可能需要重新安裝它。否則,如果你的輸出不是'site-packages',那麼你在某個地方導入了一些不是模塊本身的腳本。在這種情況下,您的快速修復將首先退出控制檯,重命名該腳本並返回到控制檯並重試。 – Abdou