Я намагаюся використовувати train_test_splitфункцію і написати:
from sklearn.model_selection import train_test_split
і це спричиняє
ImportError: No module named model_selection
Чому? А як подолати?
Я намагаюся використовувати train_test_splitфункцію і написати:
from sklearn.model_selection import train_test_split
і це спричиняє
ImportError: No module named model_selection
Чому? А як подолати?
Відповіді:
Я думаю, у вас неправильна версія 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.
import sklearn, sklearn(так, просто слово) і sklearn.__version__? Незважаючи на те, що це виправлено для вас, було б цікаво дізнатися, звідки виникла проблема.
conda оновлення
У мене була така сама проблема під час використання блокнота Jupyter, незалежно від того, що я оновлював у 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
Щоб встановити scikit-learn версію 18.0, я використав обидві команди:
conda оновлення
pip install -U scikit-learn
Але це не працює. Виникла проблема "Не вдається встановити 'scikit-learn'. Це встановлений проект, і тому ми не можемо точно визначити, які файли йому належать, що призведе до часткового видалення".
Нарешті, я можу встановити його, використовуючи таку команду:
pip install --user --upgrade scikit-learn == 0.18.0
Наприкінці вересня 2016 року було випущено 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.
Останній стабільний випуск sklearn 0.20.0 має train_test_split знаходиться у виборі model_ne під перехресною валідацією
Для того, щоб перевірити вашу версію sklearn:
імпорт sklearn друк (sklearn. версія ) 0.20.2
Додавання деякої інформації до попередньої відповіді від @linusg:
sklearnзберігає історію випусків усіх його змін. Подумайте перевірити це час від часу. Ось посилання на документацію.
Як ви можете бачити в документації до версії 0.18 , був створений новий модуль із назвою model_selection. Тому він не існував у попередніх версіях.
Оновіть, sklearnі це буде працювати!
Ваша версія sklearn занадто низька, model_selectionвона імпортується до 0.18.1, тому, будь ласка, оновіть версію sklearn.