ImportError: ไม่มีโมดูลที่ชื่อ model_selection


90

ฉันพยายามใช้train_test_splitฟังก์ชันและเขียน:

from sklearn.model_selection import train_test_split

และสาเหตุนี้

ImportError: No module named model_selection

ทำไม? แล้วจะเอาชนะได้อย่างไร?


2
ฉันเพิ่งเกิดขึ้นว่าคุณไม่ได้รับคำตอบใด ๆ ในคำถามอย่างน้อยสิบข้อสุดท้ายของคุณ อย่าลืมว่าการยอมรับคำตอบที่เป็นประโยชน์ที่สุดจะช่วยผู้ตอบและผู้ที่กำลังมองหาคำถามของคุณในอนาคต
linusg

คำตอบ:


181

ผมคิดว่าคุณมีรุ่นที่ไม่ถูกต้องของ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


7
วิธีนี้ไม่ได้ผลสำหรับฉัน แต่วิธีแก้ปัญหาของ Farhard Maleki "conda update scikit-learn" ทำ
Alex Kinman

ฉันรันคำสั่ง pip ที่คุณให้และมันจะเกิดข้อผิดพลาดขอให้ฉันอัพเกรด pip จากนั้นฉันก็อัพเกรด pip และ reran และมันจะบอกได้ว่าไม่จำเป็นต้องอัพเกรด sklearn ฉันมีเวอร์ชั่นล่าสุดแล้ว (0.17) แม้จะคิดว่า hat ก็ไม่ใช่เช่นนั้น ไม่พยายามต่อล้อต่อเถียงเพียงแค่พยายามแบ่งปันข้อมูล
Alex Kinman

@AlexKinman หากคุณติดตั้งPython 2 และ 3 ไว้ตรวจสอบให้แน่ใจว่าใช้คำสั่ง "right pip" แน่ใจหรือว่าคุณไม่มี Venvs หรือถูกต้อง? เสียงนี้แปลกคุณสามารถเปิดเปลือกงูหลามและใส่ในimport sklearn, sklearn(ครับเพียงแค่คำ) และsklearn.__version__? แม้ว่าจะได้รับการแก้ไขแล้วสำหรับคุณ แต่ก็น่าสนใจที่จะทราบว่าปัญหามาจากไหน
linusg

sklearn Out [2]: <module 'sklearn' จาก 'C: \ Users \ XYZ \ AppData \ Local \ Continuum \ Anaconda2 \ lib \ site-Packages \ sklearn_ init_ .pyc'> sklearn .__ version__ Out [3]: '0.18 .2 ' แต่นี่คือหลังจากที่ฉันเรียกใช้การอัปเกรด Sklearn ของ Conda
Alex Kinman

อย่างไรก็ตามตอนนี้มันเหมาะกับคุณแล้ว ฉันไม่ได้ใช้ Anaconda มากนัก แต่ฉันเดาว่ามันไม่ได้รวมกับ pip แก้ไขคำตอบแล้วผู้ใช้ Anaconda ทุกคนจะรู้ :)
linusg


9

GridSearchCVผมพบปัญหานี้เมื่อฉันนำเข้า

เพิ่งเปลี่ยนsklearn.model_selectionเป็นsklearn.grid_search.


6

ฉันมีปัญหาเดียวกันขณะใช้ 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


5

คุณมี sklearn ไหม ถ้าไม่ทำดังต่อไปนี้:

sudo pip install sklearn

หลังจากติดตั้ง sklearn

from sklearn.model_selection import train_test_split

ใช้งานได้ดี


3

ในการติดตั้ง scikit-learn เวอร์ชัน 18.0 ฉันใช้ทั้งสองคำสั่ง:

conda update scikit-learn

pip ติดตั้ง -U scikit-learn

แต่มันไม่ได้ผล เกิดปัญหา "ไม่สามารถติดตั้ง" scikit-learn "เป็นโปรเจ็กต์ที่ติดตั้งโดยไม่ได้ตั้งใจและทำให้เราไม่สามารถระบุได้อย่างถูกต้องว่าไฟล์ใดเป็นของไฟล์ซึ่งจะนำไปสู่การถอนการติดตั้งเพียงบางส่วน"

ในที่สุดฉันสามารถติดตั้งได้โดยใช้คำสั่งต่อไปนี้:

pip ติดตั้ง - ผู้ใช้ - อัปเกรด scikit-learn == 0.18.0


3

ในช่วงปลายเดือนกันยายน 2559 SciKit Learn 0.18 ได้เปิดตัวและมีการเปลี่ยนแปลงเล็กน้อยในรหัส ด้วย SciKit Learn 0.18 ฟังก์ชัน train_test_split จะถูกนำเข้าจาก model_selection แทน cross_validation

from sklearn.cross_validation import train_test_split

ถูกเปลี่ยนเป็น:

from sklearn.model_selection import train_test_split

เช่นเดียวกันกับ GridSearchCV


2

ดังที่ @linusg กล่าวว่าทางเลือกหนึ่งคือการนำเข้า crossvalidation ดังนี้:

from sklearn import cross_validation
X_train,X_test,y_train,y_test = cross_validation.train_test_split(X,y,test_size=0.3)

2

เวอร์ชันเสถียรล่าสุดของ sklearn 0.20.0 มีtrain_test_splitอยู่ภายใต้ model_selection ไม่อยู่ภายใต้cross_validation

ในการตรวจสอบเวอร์ชัน sklearn ของคุณ:

นำเข้าพิมพ์ sklearn ( รุ่น sklearn. ) 0.20.2


1

การเพิ่มข้อมูลบางส่วนในคำตอบก่อนหน้าจาก @linusg:

sklearnเก็บประวัติการเปิดตัวของการเปลี่ยนแปลงทั้งหมด คิดว่าจะตรวจสอบเป็นครั้งคราว นี่คือลิงค์ไปยังเอกสาร

ที่คุณสามารถดูในเอกสารสำหรับรุ่น0.18 , model_selectionโมดูลใหม่ถูกสร้างขึ้นเรียกว่า ดังนั้นจึงไม่มีในเวอร์ชันก่อนหน้า

อัปเดตsklearnและใช้งานได้!


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.