ImportError: Kein Modul mit dem Namen sklearn.cross_validation


174

Ich verwende Python 2.7 in Ubuntu 14.04. Ich habe scikit-learn, numpy und matplotlib mit folgenden Befehlen installiert:

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

Aber wenn ich diese Pakete importiere:

from sklearn.cross_validation import train_test_split

Es gibt mir diesen Fehler zurück:

ImportError: No module named sklearn.cross_validation

Was ich tun muss?


Möglicherweise ist Ihr Modulname falsch, wenn Sie sklearn und anaconda korrekt installiert haben.
CKM

11
Ich wiederhole es wirklich nur, aber Sie müssen von nun an sklearn.model_selection verwenden. cross_validation ist nicht verwendbar seit sklearn 20+
Michal Mikuláši

Antworten:


582

Es muss sich auf die Umbenennung und Ablehnung des cross_validationUntermoduls beziehen model_selection. Versuchen Sie ersetzen cross_validationzumodel_selection


8
Dies sollte definitiv die ausgewählte Antwort sein
rhys_jsk

Dies sollte die akzeptierte Antwort sein. Es funktioniert nicht nur, sondern die Stimmen sind zum Zeitpunkt meines Beitrags über 200 zu 4.
Jerry Destremps

Warum haben sklearn-Entwickler aus Gründen der Abwärtskompatibilität keinen Alias ​​eingegeben? Außerdem sollte das Dokument für diese ältere Version diesen Refaktor angeben : scikit-learn.org/0.16/modules/generated/… .
flow2k

arbeitete wie Charme
omah94

139

train_test_split befindet sich jetzt in model_selection. Schreib einfach:

from sklearn.model_selection import train_test_split

es sollte funktionieren


43

Ich denke, die Kreuzauswahl ist nicht mehr aktiv. Wir sollten stattdessen die Modellauswahl verwenden. Sie können es schreiben, um zu laufen,from sklearn.model_selection import train_test_split

Das ist es.


Das ist die Antwort. Du bist toll.
Biswajit Panday

35

Stellen Sie sicher, dass Sie Anaconda installiert haben, und erstellen Sie dann eine virtuelle Umgebung mit conda . Dadurch wird sichergestellt, dass alle Importe funktionieren

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

Nein, ich habe es nicht, ich muss Anaconda installieren?
Arthurckl

Nun, ich würde Ihnen vorschlagen, es zu installieren. Aber Sie können auch versuchen, sudo apt-get install python-sklearn, das sollte funktionieren.
Richard Rublev

7
Die Antwort von @DimaLituiev ist hier wirklich die richtige Antwort. Dieses Problem hängt hauptsächlich mit einer Umbenennung zusammen, nicht mit einem wirklich fehlenden Paket.
Amrinder Arora

2
Dies ist nicht unbedingt erforderlich. Sie schlagen vor, eine neue Umgebung nur für ein umbenanntes Paket zu installieren. Ich würde sagen, diese Lösung ist ein Overkill.
Dimas

Ich denke, die Frage hätte beantwortet werden müssen, ob "import sklearn" funktioniert hat oder nicht. Wenn es funktioniert, ist dies möglicherweise kein Namensproblem.
ju.

24

sklearn.cross_validation wird jetzt in geändert sklearn.model_selection

Benutz einfach

from sklearn.model_selection import train_test_split

Ich denke das wird funktionieren.



15

Möglicherweise liegt es an der Ablehnung von sklearn.cross_validation. Bitte ersetzen Sie sklearn.cross_validation durch sklearn.model_selection

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


1
Es scheint, dass Ihre Antwort dieselbe ist wie eine vorherige, die im selben Thread angegeben wurde. Wenn Sie der Meinung sind, dass diese Antwort verbessert werden kann, sollten Sie sie bearbeiten , anstatt eine neue Antwort auf dieselbe Frage zu geben.
Johan

@ Joan Einige, wie ich die andere Antwort nicht gesehen habe. Ich könnte meine Antwort löschen, wenn Sie es vorziehen.
Nantitv

12

Aufteilen des Datensatzes in Trainingssatz und Testsatz

from sklearn.model_selection import train_test_split

2
Gleiche Lösung wie die Antwort von Ayat ullah Sony.
Eric Aya

9

Vergangenheit: from sklearn.cross_validation (Dieses Paket ist in der Version 0.18 ab 0.20 veraltet und wird in geändert. from sklearn import model_selection)

Geschenk: from sklearn import model_selection

Beispiel 2:

Vergangenheit: from sklearn.cross_validation import cross_val_score(Version 0.18, die veraltet ist)

Geschenk : from sklearn.model_selection import cross_val_score


7

sklearn.cross_validation wird jetzt in geändert sklearn.model_selection

Nur ändern

sklearn.cross_validation

zu

sklearn.model_selection

4

Ändern Sie den Code wie folgt

# from sklearn.cross_validation import train_test_split
from sklearn.model_selection import train_test_split

4

Wenn Sie Code haben, der verschiedene Versionen ausführen muss, können Sie Folgendes tun:

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

Dies ist jedoch nicht ideal, da Sie Paketversionen als Zeichenfolgen vergleichen, was normalerweise funktioniert, aber nicht immer. Wenn Sie zur Installation bereit sind, packagingist dies ein viel besserer Ansatz:

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 war vor einiger Zeit veraltet. Versuchen Sie es mit model_selection auszuschalten


Versuchen Sie, Ihrer Antwort mehr Erklärungen hinzuzufügen, um ihr mehr Wert zu verleihen.
Zeina

2

train_test_splitist Teil des Moduls sklearn.model_selection, daher müssen Sie das Modul möglicherweise aus importierenmodel_selection

Code:

from sklearn.model_selection import train_test_split

0

Entweder müssen wir scikit-learn auf die neueste kompatible Version herunterstufen. Dies kann nach Aktivierung der Conda-Umgebung erfolgen. Verwenden Sie die folgenden Befehle, um scikit-learn herunterzustufen:

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

ODER

Wenn wir Scikit-Learn nicht herabstufen wollen. Dann wussten wir alle, dass der Name "cross_validation" in neueren Versionen von scikit-learn veraltet ist und in der neuen Anaconda-Version durch "model_selection" ersetzt wurde. Daher erhalten wir möglicherweise eine Warnung oder sogar einen Fehler.

Um dies zu vermeiden, müssen wir nur ersetzen:

from sklearn.cross_validation import train_test_split

zu

from sklearn.model_selection import train_test_split 

Hoffe, dies wird helfen, das Problem zu lösen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.