Corso
Scikit-learn, spesso abbreviato in sklearn, è una libreria Python ampiamente utilizzata per attività di analisi e modellazione dei dati, incluso il machine learning. I nuovi utenti impazienti di provare sklearn potrebbero però frustrarsi quando incontrano un messaggio d’errore poco familiare e non semplice da diagnosticare.
In questo tutorial vedremo come correggere l’errore No module named 'sklearn' per tornare operativi usando l’ampia raccolta di algoritmi e strumenti di sklearn per l’analisi e la modellazione dei dati. Nel frattempo, impareremo anche competenze più generali per la risoluzione dei problemi d’installazione dei pacchetti, diventando programmatori Python più solidi. Per un ripasso sul pacchetto scikit-learn, dai un’occhiata alla nostra Scikit-Learn Cheat Sheet prima di iniziare.
Capire l’errore No module named 'sklearn' in Python
Osserviamo l’immagine seguente. Qui abbiamo provato a importare sklearn e abbiamo ottenuto un’eccezione ModuleNotFoundError.
ModuleNotFoundError in ambiente Python
Come possiamo intuire dal nome, ModuleNotFoundError è un tipo specifico di ImportError che indica che Python non riesce a trovare un determinato modulo. In questo caso, il modulo è sklearn, ma potrebbe essere qualsiasi altro modulo, come numpy o pandas.
Il nostro corso Introduction to Data Science in Python contiene lezioni con molti esempi su come importare e lavorare con moduli come numpy.
Cause comuni del messaggio Python ModuleNotFoundError
Potresti incontrare l’errore No module named 'sklearn' per diverse ragioni comuni. Tra le principali:
-
Sklearn non installato: La causa più frequente è che
scikit-learnnon è installato nel nostro ambiente Python. -
Installazione non corretta: A volte
scikit-learnpuò essere installato ma non correttamente, causando problemi nell’import dei moduli della libreria. -
Problemi di configurazione dell’ambiente o del percorso Python: Questo accade più spesso quando si lavora in un ambiente virtuale o si usa un interprete Python diverso.
Per fortuna, con un approccio passo dopo passo, è probabile che riusciremo a risolvere il problema. Andiamo avanti.
Risoluzione dell’errore Python ModuleNotFoundError
Verifica dell’installazione di scikit-learn
Il primo passo è assicurarci che scikit-learn sia installato correttamente nel nostro ambiente Python. Possiamo farlo eseguendo il seguente comando nel terminale o prompt dei comandi:
py -m pip list
Questo produce un elenco alfabetico di tutte le librerie installate nel nostro ambiente Python. Scorriamo l’elenco e verifichiamo che scikit-learn sia presente.
Esempio di elenco dei pacchetti installati
Se, dopo aver scorsi l’elenco, scopriamo che scikit-learn non è installato, possiamo installarlo usando il comando pip o conda, a seconda del nostro ambiente:
pip install scikit-learn
conda install scikit-learn
Per maggiori informazioni sull’uso di gestori di pacchetti come pip, consulta il nostro Pip Python Tutorial for Package Management.
Riavvia il kernel di Python
Se stiamo lavorando in un Jupyter Notebook o in un IDE come Spyder, il passo successivo è considerare il riavvio del kernel Python. Lo facciamo perché, anche se abbiamo appena installato o reinstallato scikit-learn, la modifica potrebbe non essere disponibile subito nella sessione interattiva corrente. Riavviare il kernel ricarica l’ambiente e i percorsi delle librerie. È un passaggio semplice ma essenziale che può risolvere tanti tipi di errori.
Riavvio del kernel Jupyter
Controlla variabili d’ambiente e percorso di Python
Successivamente dobbiamo assicurarci che il nostro ambiente Python sia configurato correttamente per individuare il pacchetto scikit-learn. Questo passaggio è cruciale perché garantisce che Python cerchi nelle directory corrette il pacchetto scikit-learn installato.
Qui controlliamo la variabile d’ambiente PYTHONPATH per verificare che includa la directory in cui è installato scikit-learn. Possiamo farlo eseguendo il seguente comando in uno script o interprete Python:
import sys
print(sys.path)
Eseguendo import sys seguito da print(sys.path) possiamo vedere le directory che Python sta attualmente controllando. Se il percorso alla directory in cui è installato scikit-learn non è presente nell’elenco, Python non riuscirà a trovare e importare scikit-learn.
Infine, possiamo verificare che l’interprete Python in uso corrisponda all’ambiente in cui è installato scikit-learn. Segui il nostro tutorial dettagliato per imparare come configurare un ambiente di data science sul tuo computer.
Reinstalla scikit-learn
Se non funziona nient’altro, valuta di reinstallare scikit-learn per risolvere eventuali problemi legati all’installazione. È possibile che il file si sia corrotto durante il download o l’installazione a causa di problemi di rete, interruzioni o errori del disco. È anche possibile che ci siano stati conflitti di dipendenze da installazioni precedenti.
Possiamo disinstallare scikit-learn usando pip o conda e poi reinstallarlo per garantire un’installazione pulita.
pip uninstall scikit-learn
pip install scikit-learn
conda uninstall scikit-learn
conda install scikit-learn
Verifica dell’installazione e della configurazione dell’ambiente
Come passaggio finale, una volta che pensiamo di aver risolto l’errore No module named 'sklearn', potremmo voler verificare che scikit-learn sia installato correttamente e che l’ambiente sia configurato in modo appropriato, per stare tranquilli.
Possiamo farlo importando scikit-learn in uno script o interprete Python e controllando se compaiono errori di import.
import sklearn
print(sklearn.__version__)
Se non incontriamo errori, scikit-learn dovrebbe essere installato correttamente e possiamo iniziare a usarlo nei tuoi progetti di machine learning!
Conclusione
Imbattersi nell’errore No module named 'sklearn' può essere frustrante, ma con i giusti passaggi di troubleshooting possiamo risolverlo rapidamente e tornare alle nostre attività di machine learning.
Ti invito a approfondire la teoria alla base del machine learning e alcuni modelli comuni, come il clustering k-means, la regressione logistica o le SVM. Puoi anche imparare alcune buone pratiche di coding per evitare in futuro altri messaggi d’errore frustranti.
Sono un PhD con 13 anni di esperienza nel lavoro con i dati in un contesto di ricerca biologica. Creo software in diversi linguaggi di programmazione, tra cui Python, MATLAB e R. Sono appassionato di condividere con il mondo il mio amore per l’apprendimento.


