ImportError: Немає модуля з іменем sklearn.cross_validation


174

Я використовую python 2.7 в Ubuntu 14.04. Я встановив scikit-learn, numpy та matplotlib за допомогою цих команд:

sudo apt-get install build-essential python-dev python-numpy \
python-numpy-dev python-scipy libatlas-dev g++ python-matplotlib \
ipython

Але коли я імпортую ці пакунки:

from sklearn.cross_validation import train_test_split

Це повертає мені цю помилку:

ImportError: No module named sklearn.cross_validation

Що мені потрібно зробити?


можливо, назва вашого модуля неправильне, якщо ви правильно встановили sklearn та anaconda.
CKM

11
Я насправді просто повторюю це, але ви повинні використовувати sklearn.model_selection відтепер. cross_validation не використовується, оскільки sklearn 20+
Michal Mikuláši

Відповіді:


582

Це повинно стосуватися перейменування та знецінення cross_validationпідмодуля в model_selection. Спробуйте замінити cross_validationнаmodel_selection


8
Це обов'язково повинна бути обрана відповідь
rhys_jsk

Це має бути прийнятою відповіддю. Мало того, що це працює, але голоси перевищують 200 до 4 на момент моєї посади.
Джеррі Дестремпс

Чому розробники sklearn не поставили псевдонім для зворотної сумісності? Крім того, документ про цю старішу версію повинен вказати цей рефактор: scikit-learn.org/0.16/modules/generated/… .
flow2k

працював як шарм
omah94

139

train_test_split зараз перебуває у виборі моделі. Просто введіть:

from sklearn.model_selection import train_test_split

це має працювати


43

Я думаю, перехресний вибір більше не активний. Натомість слід використовувати вибір моделі. Ви можете написати це для запуску,from sklearn.model_selection import train_test_split

Це воно.


Це відповідь. Ти надзвичайний.
Biswajit Panday

35

Переконайтеся, що у вас встановлена Anaconda, а потім створіть virtualenv за допомогою conda . Це забезпечить роботу над імпортом

Python 2.7.9 |Anaconda 2.2.0 (64-bit)| (default, Mar  9 2015, 16:20:48) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://binstar.org
>>> from sklearn.cross_validation import train_test_split

Ні, у мене його немає, мені потрібно встановити Anaconda?
arthurckl

Ну, я б запропонував вам встановити його. Але ви також можете спробувати sudo apt-get install python-sklearn, який повинен працювати.
Річард Рубльов

7
Відповідь @DimaLituiev тут справді правильна відповідь. Ця проблема здебільшого пов'язана з перейменуванням, а не справжнім відсутнім пакетом.
Amrinder Arora

2
Це не обов'язково потрібно. Ви пропонуєте встановити нове середовище лише для одного пакету, який було перейменовано, я б сказав, що це рішення є надмірним. Рішення Діми слід позначити як правильну відповідь
MuhsinFatih

Я думаю, що питання повинно було вирішити, чи працював він "імпортний склеарн" чи не перший. Якщо це працює, можливо, це не проблема називання.
жу.

24

sklearn.cross_validation тепер змінено на sklearn.model_selection

Просто використовуйте

from sklearn.model_selection import train_test_split

Я думаю, що це спрацює.



15

Можливо, це пов’язано з депривацією sklearn.cross_validation. Будь ласка, замініть sklearn.cross_validation на sklearn.model_selection

Ref- https://github.com/amueller/scipy_2015_sklearn_tutorial/isissue/60


1
Здається, ваша відповідь така ж, як і попередня, наведена в тій самій нитці. Якщо ви вважаєте, що відповідь можна вдосконалити, подумайте про її редагування, а не про нову відповідь на те саме питання.
Йоган

@Johan Деякі, як я не бачив іншої відповіді. Я можу видалити свою відповідь, якщо хочете.
nantitv

12

Розбиття набору даних на навчальний набір і тестовий набір

from sklearn.model_selection import train_test_split

2
Це ж рішення, як і відповідь айят уллах соні.
Ерік Айя

9

Минуле: from sklearn.cross_validation (Цей пакет застарілий у версії 0.18, починаючи з 0.20 він змінено на from sklearn import model_selection).

Присутні: from sklearn import model_selection

Приклад 2:

Минуле: from sklearn.cross_validation import cross_val_score(застаріла версія 0.18)

Присутні: from sklearn.model_selection import cross_val_score


7

sklearn.cross_validation тепер змінено на sklearn.model_selection

Просто змінити

sklearn.cross_validation

до

sklearn.model_selection


4

Якщо у вас є код, який повинен запускати різні версії, ви можете зробити щось подібне:

import sklearn
if sklearn.__version__ > '0.18':
    from sklearn.model_selection import train_test_split
else:
    from sklearn.cross_validation import train_test_split

Це не ідеально, хоча ви порівнюєте версії пакета як рядки, що зазвичай працює, але не завжди. Якщо ви готові встановити packaging, це набагато кращий підхід:

from packaging.version import parse
import sklearn
if parse(sklearn.__version__) > parse('0.18'):
    from sklearn.model_selection import train_test_split
else:
    from sklearn.cross_validation import train_test_split

2

cross_validation деякий час тому було знято, спробуйте вимкнути його з model_selection


спробуйте додати більше пояснень у свою відповідь, щоб дати їй більше значення.
Зейна

2

train_test_splitє частиною модуля sklearn.model_selection, отже, вам може знадобитися імпортувати модульmodel_selection

Код:

from sklearn.model_selection import train_test_split

0

Або ми повинні знизити scikit-learn до останньої сумісної версії. І це можна зробити після активації середовища конди. Використовуйте наступні команди для пониження рівня scikit-learn:

pip uninstall scikit-learn
pip install scikit-learn==0.19.2

АБО

Коли ми не хочемо знижувати наукову науку. Тоді ми всі знали, що назва "cross_validation" застаріла в нових версіях scikit-learn і була замінена на "model_selection" всередині нової версії анаконди. Тому ми можемо отримати попередження або навіть помилку.

Щоб цього уникнути, нам просто потрібно замінити:

from sklearn.cross_validation import train_test_split

до

from sklearn.model_selection import train_test_split 

Сподіваюся, це допоможе вирішити проблему.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.