Comment réparer : aucun module nommé « sklearn.cross_validation » ;



Une erreur que vous pouvez rencontrer lors de l’utilisation de Python est :

ModuleNotFoundError: No module named 'sklearn.cross_validation'

Cette erreur se produit généralement lorsque vous tentez d’importer la fonction train_test_split depuis sklearn en utilisant la ligne suivante :

from sklearn.cross_validation import train_test_split

Cependant, le sous-module cross_validation a été remplacé par le sous-module model_selection , vous devez donc utiliser la ligne suivante :

from sklearn.model_selection import train_test_split

L’exemple suivant montre comment résoudre cette erreur dans la pratique.

Comment reproduire l’erreur

Supposons que nous souhaitions utiliser la fonction train_test_split de sklearn pour diviser un DataFrame pandas en ensembles de formation et de test.

Supposons que nous essayions d’utiliser le code suivant pour importer la fonction train_test_split :

from sklearn.cross_validation import train_test_split

ModuleNotFoundError: No module named 'sklearn.cross_validation' 

Nous recevons une erreur car nous avons utilisé un mauvais nom de sous-module lors de la tentative d’importation de la fonction train_test_split .

Comment réparer l’erreur

Pour corriger cette erreur, nous devons simplement utiliser le sous-module model_selection à la place :

from sklearn.model_selection import train_test_split

Cette fois, nous ne recevons aucune erreur.

Nous pourrions ensuite utiliser la fonction train_test_split pour diviser un DataFrame pandas en un ensemble de formation et de test :

from sklearn.model_selection import train_test_split
import pandas as pd
import numpy as np

#make this example reproducible
np.random.seed(1)

#create DataFrame with 1000 rows and 3 columns
df = pd.DataFrame({'x1': np.random.randint(30, size=1000),
                   'x2': np.random.randint(12, size=1000),
                   'y': np.random.randint(2, size=1000)})

#split original DataFrame into training and testing sets
train, test = train_test_split(df, test_size=0.2, random_state=0)

#view first few rows of each set
print(train.head())

     x1  x2  y
687  16   2  0
500  18   2  1
332   4  10  1
979   2   8  1
817  11   1  0

print(test.head())

     x1  x2  y
993  22   1  1
859  27   6  0
298  27   8  1
553  20   6  0
672   9   2  1

Nous parvenons à utiliser avec succès la fonction train_test_split sans aucune erreur.

Ressources additionnelles

Les didacticiels suivants expliquent comment corriger d’autres erreurs courantes en Python :

Comment réparer : les colonnes se chevauchent mais aucun suffixe n’est spécifié
Comment réparer : l’objet ‘numpy.ndarray’ n’a pas d’attribut ‘append’
Comment réparer : si vous utilisez toutes les valeurs scalaires, vous devez transmettre un index
Comment réparer : ValueError : impossible de convertir le float NaN en entier

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *