Come risolvere: nessun modulo denominato "sklearn.cross_validation";
Un errore che potresti riscontrare quando usi Python è:
ModuleNotFoundError : No module named 'sklearn.cross_validation'
Questo errore di solito si verifica quando si tenta di importare la funzione train_test_split da sklearn utilizzando la seguente riga:
from sklearn. cross_validation import train_test_split
Tuttavia, il sottomodulo cross_validation è stato sostituito dal sottomodulo model_selection , quindi è necessario utilizzare la seguente riga:
from sklearn. model_selection import train_test_split
L’esempio seguente mostra come risolvere questo errore nella pratica.
Come riprodurre l’errore
Supponiamo di voler utilizzare la funzione train_test_split di sklearn per dividere un DataFrame panda in set di training e test.
Supponiamo di provare a utilizzare il seguente codice per importare la funzione train_test_split :
from sklearn. cross_validation import train_test_split ModuleNotFoundError : No module named 'sklearn.cross_validation'
Riceviamo un errore perché abbiamo utilizzato il nome del sottomodulo sbagliato durante il tentativo di importare la funzione train_test_split .
Come correggere l’errore
Per correggere questo errore, dobbiamo semplicemente utilizzare invece il sottomodulo model_selection :
from sklearn. model_selection import train_test_split
Questa volta non riceviamo alcun errore.
Potremmo quindi utilizzare la funzione train_test_split per dividere un DataFrame panda in un set di training e test:
from sklearn. model_selection import train_test_split import pandas as pd import numpy as np #make this example reproducible n.p. random . seeds (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
Riusciamo a utilizzare con successo la funzione train_test_split senza errori.
Risorse addizionali
I seguenti tutorial spiegano come correggere altri errori comuni in Python:
Come risolvere il problema: le colonne si sovrappongono ma non è specificato alcun suffisso
Come risolvere il problema: l’oggetto “numpy.ndarray” non ha un attributo “append”.
Come risolvere il problema: se utilizzi tutti i valori scalari, devi passare un indice
Come risolvere il problema: ValueError: impossibile convertire float NaN in int