Я пытаюсь использовать 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 update scikit-learn
У меня была такая же проблема при использовании 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
Чтобы установить scikit-learn версии 18.0, я использовал обе команды:
conda update scikit-learn
pip install -U scikit-learn
Но это не работает. Возникла проблема «Невозможно установить 'scikit-learn'. Это проект, установленный distutils, и поэтому мы не можем точно определить, какие файлы ему принадлежат, что привело бы только к частичному удалению».
Наконец, я могу установить его, используя следующую команду:
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_selection, а не под cross_validation
Чтобы проверить свою версию sklearn:
импорт sklearn print ( версия sklearn. ) 0.20.2
Добавление информации к предыдущему ответу от @linusg:
sklearn
хранит историю выпусков всех своих изменений. Подумайте о том, чтобы проверять его время от времени. Вот ссылка на документацию.
Как видно из документации к версии 0.18 , был создан новый модуль с именем model_selection
. Поэтому его не было в предыдущих версиях.
Обновите sklearn
и все заработает!
У вас слишком низкая версия sklearn, model_selection
она импортирована 0.18.1, поэтому обновите версию sklearn.