Я намагаюся використовувати 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.