Я пытаюсь использовать функцию 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.
conda update scikit-learn
Я столкнулся с этой проблемой, когда импортирую GridSearchCV
.
Просто изменил sklearn.model_selection
на sklearn.grid_search
.
У меня была та же проблема при использовании 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
У вас есть sklearn? если нет, выполните следующие действия:
sudo pip install sklearn
После установки sklearn
from sklearn.model_selection import train_test_split
отлично работает
Для установки 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
Как сказал @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)
Добавление некоторой информации к предыдущему ответу от @linusg:
sklearn
хранит историю релиза всех изменений. Подумайте о проверке его время от времени. Здесь - ссылка на документацию.
Как вы можете видеть в документации для версии 0.18, был создан новый модуль с именем model_selection
. Поэтому он не существовал в предыдущих версиях.
Обновить sklearn
, и он будет работать!
Последняя стабильная версия sklearn 0.20.0 имеет train_test_split под model_selection, а не cross_validation
Чтобы проверить свою версию sklearn:
импорт склеарн принт (склеарн. версия) 0.20.2
Ваша версия sklearn слишком низкая, model_selection
импортируется на 0.18.1, поэтому, пожалуйста, обновите версию sklearn.
Итак, вот мнение по этому поводу - если вы посмотрите на это - WTF - это Pythonistas, делающие BREAKING назад-совместимость !!!
Иисус, какая Планета - эти люди!
Если вы придете сюда, а также подумайте, WTF, почему эти плакаты, по-видимому, принимают эту общую BS от Pythonistas...
Изучите R и сообщите Python и их "обновите версию sklearn" до F ** k off.
В конце сентября 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.
Спасибо всем!