Próbuję użyć train_test_split
funkcji i napisać:
from sklearn.model_selection import train_test_split
i to powoduje
ImportError: No module named model_selection
Czemu? A jak pokonać?
Próbuję użyć train_test_split
funkcji i napisać:
from sklearn.model_selection import train_test_split
i to powoduje
ImportError: No module named model_selection
Czemu? A jak pokonać?
Odpowiedzi:
Chyba masz złą wersję scikit-learn
, podobna sytuacja została opisana tutaj na GitHubie . Wcześniej (wcześniej v0.18
) train_test_split
znajdowało się w cross_validation
module:
from sklearn.cross_validation import train_test_split
Jednak teraz jest w model_selection
module:
from sklearn.model_selection import train_test_split
więc będziesz potrzebować najnowszej wersji.
Aby zaktualizować do przynajmniej wersji 0.18
, wykonaj:
pip install -U scikit-learn
(Lub pip3
, w zależności od twojej wersji Pythona). Jeśli zainstalowałeś go w inny sposób, upewnij się, że używasz innej metody aktualizacji, na przykład podczas korzystania z Anacondy.
import sklearn
, sklearn
(tak, właśnie to słowo) i sklearn.__version__
? Nawet jeśli problem został rozwiązany, warto wiedzieć, skąd się wziął.
aktualizacja conda scikit-learn
Miałem ten sam problem podczas korzystania z Jupyter Notebook, bez względu na to, co zaktualizowałem w Pythonie 3, conda, nie mogłem uzyskać w Jupyter:
import sklearn
print (sklearn.__version__)
0.17.1
POKAŻ scikit-learn-0.18.1
Wreszcie usunąłem Anaconda3 i Jupyter Notebook i ponownie zainstalowałem nowy. Mam to do pracy.
http://ukitech.blogspot.com/2017/02/sklearnmodelselection.html
Aby zainstalować scikit-learn w wersji 18.0, użyłem obu poleceń:
aktualizacja conda scikit-learn
pip install -U scikit-learn
Ale to nie działa. Wystąpił problem „Nie można zainstalować 'scikit-learn'. Jest to projekt zainstalowany w dystrybucji distutils i dlatego nie możemy dokładnie określić, które pliki do niego należą, co doprowadziłoby tylko do częściowego odinstalowania”.
Wreszcie mogę go zainstalować za pomocą następującego polecenia:
pip install --user --upgrade scikit-learn == 0.18.0
Pod koniec września 2016, SciKit Learn 0.18 został wydany i nastąpiła niewielka zmiana w kodzie. W SciKit Learn 0.18 funkcja train_test_split jest teraz importowana z modelu_selection zamiast cross_validation.
from sklearn.cross_validation import train_test_split
został zmieniony na:
from sklearn.model_selection import train_test_split
To samo stało się z GridSearchCV.
Najnowsza stabilna wersja sklearn 0.20.0 ma train_test_split jest objęty modelem_selection, a nie cross_validation
Aby sprawdzić swoją wersję sklearn:
import sklearn print ( wersja sklearn) 0.20.2
Dodanie informacji do poprzedniej odpowiedzi od @linusg:
sklearn
przechowuje historię wszystkich zmian. Pomyśl o sprawdzeniu tego od czasu do czasu. Oto link do dokumentacji.
Jak widać w dokumentacji do wersji 0.18 , utworzono nowy moduł o nazwie model_selection
. Dlatego nie istniał w poprzednich wersjach.
Zaktualizuj sklearn
i zadziała!
Twoja wersja sklearn jest za niska, model_selection
została zaimportowana do 0.18.1, więc zaktualizuj wersję sklearn.