Подтвердить что ты не робот

ImportError: нет модуля с именем model_selection

Я пытаюсь использовать функцию train_test_split и пишу:

from sklearn.model_selection import train_test_split

и это вызывает

ImportError: No module named model_selection

Почему? И как победить?

4b9b3361

Ответ 1

Я предполагаю, что у вас неправильная версия 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.

Ответ 2

Обновить sklearn

conda update scikit-learn

Ответ 3

Я столкнулся с этой проблемой, когда импортирую GridSearchCV.

Просто изменил sklearn.model_selection на sklearn.grid_search.

Ответ 4

У меня была та же проблема при использовании 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

отлично работает

Ответ 6

Для установки scikit-learn версии 18.0 я использовал обе команды:

conda update scikit-learn

pip install -U scikit-learn

Но это не работает. Возникла проблема "Невозможно установить" scikit-learn ". Это проект, установленный distutils, и поэтому мы не можем точно определить, какие файлы принадлежат ему, что приведет к частичной деинсталляции".

Наконец, я могу установить его, используя следующую команду:

pip install - -U ser - -U pgrade scikit-learn == 0.18.0

Ответ 7

Как сказал @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)

Ответ 8

Добавление некоторой информации к предыдущему ответу от @linusg:

sklearn хранит историю релиза всех изменений. Подумайте о проверке его время от времени. Здесь - ссылка на документацию.

Как вы можете видеть в документации для версии 0.18, был создан новый модуль с именем model_selection. Поэтому он не существовал в предыдущих версиях.

Обновить sklearn, и он будет работать!

Ответ 9

Последняя стабильная версия sklearn 0.20.0 имеет train_test_split под model_selection, а не cross_validation

Чтобы проверить свою версию sklearn:

импорт склеарн принт (склеарн. версия) 0.20.2

Ответ 10

Ваша версия sklearn слишком низкая, model_selection импортируется на 0.18.1, поэтому, пожалуйста, обновите версию sklearn.

Ответ 11

Итак, вот мнение по этому поводу - если вы посмотрите на это - WTF - это Pythonistas, делающие BREAKING назад-совместимость !!!

Иисус, какая Планета - эти люди!

Если вы придете сюда, а также подумайте, WTF, почему эти плакаты, по-видимому, принимают эту общую BS от Pythonistas...

Изучите R и сообщите Python и их "обновите версию sklearn" до F ** k off.

Ответ 12

В конце сентября 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.

Спасибо всем!