ImportError: Model_selection नाम का कोई मॉड्यूल नहीं


89

मैं train_test_splitफ़ंक्शन का उपयोग करने और लिखने की कोशिश कर रहा हूं :

from sklearn.model_selection import train_test_split

और यह कारण बनता है

ImportError: No module named model_selection

क्यों? और कैसे दूर करें?


2
यह सिर्फ मेरे लिए है, कि आपने कम से कम अपने पिछले दस प्रश्नों में से किसी भी उत्तर को स्वीकार नहीं किया है। याद रखें, सबसे उपयोगी उत्तर को स्वीकार करने से उत्तरदाता और भविष्य में आपके प्रश्न को देखने वाले लोगों को मदद मिलेगी।
linusg

जवाबों:


179

मुझे लगता है कि आपके पास गलत संस्करण है scikit-learn, इसी तरह की स्थिति गीथहब पर यहां वर्णित की गई थी । पहले (पहले 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, पायथन के आपके संस्करण पर निर्भर करता है)। यदि आपने इसे अलग तरीके से स्थापित किया है, तो सुनिश्चित करें कि आप अपडेट करने के लिए किसी अन्य विधि का उपयोग करते हैं, उदाहरण के लिए एनाकोंडा का उपयोग करते समय।


7
यह मेरे लिए काम नहीं करता था, हालांकि फ़रहार्ड मालेकी के समाधान, "कोंडा अपडेट स्किकिट-लर्न" ने किया।
एलेक्स किमैन

मैंने आपके द्वारा दिए गए पाइप कमांड को चलाया, और यह मुझे पाइप को अपग्रेड करने के लिए कहकर एक त्रुटि फेंक देगा। फिर मैंने पाइप और रेनन को अपग्रेड किया, और यह बताएगा कि स्केलेर को अपग्रेड करने की कोई आवश्यकता नहीं थी, मेरे पास पहले से ही नवीनतम संस्करण (0.17) है, यहां तक ​​कि सोचा कि टोपी मामला नहीं था। हग करने की कोशिश नहीं, बस जानकारी साझा करने की कोशिश कर रहा है।
एलेक्स किनमैन

@AlexKinman यदि आपके पास पायथन 2 और 3 स्थापित हैं, तो "सही पाइप" कमांड का उपयोग करना सुनिश्चित करें। क्या आप सुनिश्चित हैं कि आपके पास वेज नहीं हैं या सही में हैं? यह लगता है अजीब, आप एक अजगर खोल खोल सकते हैं और में डाल सकता है import sklearn, sklearnऔर (हां, सिर्फ शब्द) sklearn.__version__? हालांकि यह आपके लिए निर्धारित है, यह जानना दिलचस्प होगा कि मुद्दा कहां से आया है।
linusg

sklearn आउट [2]: <मॉड्यूल 'sklearn' से 'C: \ Users \ XYZ \ AppData \ Local \ सातत्य \ Anaconda2 \ lib \ साइट-संकुल \ sklearn_ init_ .pyc'> sklearn .__ version__ आउट [3]: '0.18 .2 ' लेकिन यह तब है जब मैंने स्केलेर का कॉनडा अपग्रेड चलाया है
एलेक्स किमैन जूल

किसी भी तरह, अच्छा यह अब आपके लिए काम करता है। मैंने एनाकोंडा का इतना उपयोग नहीं किया है, लेकिन मुझे लगता है कि यह पाइप के साथ एकीकृत नहीं है। उत्तर संपादित करें, सभी एनाकोंडा उपयोगकर्ताओं को पता होगा :)
linusg


9

आयात करते समय मुझे इस समस्या का सामना करना पड़ा GridSearchCV

बस में बदल sklearn.model_selectionगया sklearn.grid_search


6

जुपिटर नोटबुक का उपयोग करते समय मुझे एक ही समस्या थी, चाहे मैं पायथन 3, कोंडा में अपडेट किया गया हो, मैं जुपिटर में नहीं मिला:

import sklearn
print (sklearn.__version__)
0.17.1

SHOW scikit-learn-0.18.1

अंत में, मैंने एनाकोंडा 3 और ज्यूपिटर नोटबुक को हटा दिया और नए सिरे से पुनः स्थापित किया। मुझे यह काम करने के लिए मिला है।

http://ukitech.blogspot.com/2017/02/sklearnmodelselection.html


5

क्या आपके पास स्केलेर है? यदि नहीं, तो निम्न कार्य करें:

sudo pip install sklearn

Sklearn स्थापित करने के बाद

from sklearn.model_selection import train_test_split

ठीक काम करता है


3

संस्करण -18.0 स्थापित करने के लिए, मैंने दोनों कमांड का उपयोग किया:

conda अपडेट scikit-learn

पाइप स्थापित -U scikit- सीखें

लेकिन यह काम नहीं करता है। एक समस्या थी "स्किकिट-लर्न को स्थापित नहीं किया जा सकता है। यह एक डिस्टुटिल्स इनस्टॉल प्रोजेक्ट है और इस प्रकार हम सही तरीके से यह निर्धारित नहीं कर सकते हैं कि कौन सी फाइलें इससे संबंधित हैं जो केवल आंशिक अनइंस्टाल की ओर ले जाएगा"।

अंत में, मैं निम्नलिखित कमांड का उपयोग करके इसे स्थापित कर सकता हूं:

पाइप स्थापित करें - टसर - अपग्रेड स्किकिट-सीखें == 0.18.0


3

सितंबर 2016 के अंत में, SciKit Learn 0.18 जारी किया गया था और कोड में थोड़ा बदलाव हुआ था। SciKit के साथ 0.18 जानें ट्रेन_test_split फ़ंक्शन अब cross_valation के बजाय मॉडल_सेप्शन से आयात किया गया है।

from sklearn.cross_validation import train_test_split

इसे बदल दिया गया है:

from sklearn.model_selection import train_test_split

ग्रिडसर्चक सीवी के लिए भी यही हुआ है।


2

जैसा कि @linusg ने कहा, एक विकल्प सिर्फ आयात क्रॉसवालिडेशन है जो निम्नानुसार है:

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

अपने स्केलेर संस्करण की जाँच करने के लिए:

आयात स्केलेर प्रिंट (स्केलेर संस्करण ) 0.20.2


1

@Linusg से पिछले उत्तर में कुछ जानकारी जोड़ना :

sklearnअपने सभी परिवर्तनों का एक इतिहास जारी रखता है। समय-समय पर इसकी जांच करते रहें। यहाँ प्रलेखन के लिए लिंक है।

जैसा कि आप 0.18 संस्करण के लिए प्रलेखन में देख सकते हैं , एक नया मॉड्यूल बनाया गया था model_selection। इसलिए यह पिछले संस्करणों में मौजूद नहीं था।

अद्यतन sklearnऔर यह काम करेगा!


0

आपका स्केलेर संस्करण बहुत कम है, model_selection0.18.1 द्वारा आयात किया गया है, इसलिए स्केलेर संस्करण को अपडेट करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.