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