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

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *