Scikit-learn: cos’è e a cosa serve
Scikit-learn è una libreria open source scritta in Python che raccoglie algoritmi di apprendimento automatico per classificazione, regressione, clustering e riduzione della dimensionalità. Si appoggia su NumPy, SciPy e Matplotlib e distribuisce il codice con licenza BSD, nella versione 1.9.1 di settembre 2026.
Scikit-learn: cosa portare a casa?
- Cos’è: una libreria Python open source per gli algoritmi di apprendimento automatico classico su dati tabellari.
- Licenza e dipendenze: licenza BSD, costruita su NumPy, SciPy e Matplotlib.
- Cosa permette di fare: classificazione, regressione, clustering, riduzione della dimensionalità e selezione del modello con un’unica interfaccia fit/predict.
- Come si installa: con
pip install -U scikit-learnoppure conconda install -c conda-forge scikit-learn. - Versione attuale: 1.9.1, rilasciata l’11 settembre 2026.
- Limite da conoscere: gira in memoria su CPU (con supporto Array API dalla 1.8 per GPU PyTorch e CuPy) e non copre le reti neurali profonde.
Cos’è scikit-learn

Scikit-learn raccoglie in un’unica libreria gli algoritmi di apprendimento automatico più usati per lavorare con dati tabellari: alberi decisionali, support vector machine, regressione logistica, k-means e molti altri. La libreria non costruisce reti neurali profonde, resta pensata per i problemi su dati strutturati. Per inquadrare dove si colloca nella disciplina più ampia rimando alla definizione di machine learning pubblicata sul mio sito.
Storia e origine del progetto
Il progetto parte nel 2007 come lavoro di Google Summer of Code, scritto dal ricercatore francese David Cournapeau con il nome scikits.learn, pensato come estensione di SciPy. Nel 2010 un gruppo di ricercatori dell’INRIA, l’istituto francese di ricerca in informatica, prende in carico lo sviluppo e pubblica la prima versione pubblica a fine gennaio 2010. La prima versione stabile, la 1.0.0, arriva il 24 settembre 2021, dopo oltre 2.100 pull request accettate, circa 800 delle quali dedicate solo alla documentazione.
Licenza e dipendenze
Scikit-learn si distribuisce con licenza BSD: si può usare anche in un prodotto commerciale senza dover rendere pubblico il codice che lo richiama. Il progetto è sponsorizzato da NumFOCUS, l’organizzazione no profit che sostiene diversi progetti scientifici open source. Dal punto di vista tecnico si appoggia su NumPy per gli array e l’algebra lineare, su SciPy per le funzioni scientifiche (da cui deriva parte del nome) e su Matplotlib per i grafici. Alcuni algoritmi, come le support vector machine, girano su wrapper scritti in Cython che richiamano le librerie C LIBSVM e LIBLINEAR: più veloci del Python puro, ma non modificabili senza intervenire su quel livello.
Caratteristiche principali di scikit-learn

Apprendimento supervisionato e non supervisionato
Per l’apprendimento supervisionato scikit-learn mette a disposizione algoritmi di classificazione (random forest, support vector machine, regressione logistica) e di regressione (ridge, lasso, elastic net). Per quello non supervisionato offre clustering come k-means, HDBSCAN e agglomerative clustering, oltre a tecniche di riduzione della dimensionalità come la PCA e la t-SNE. La scelta tra i due dipende da un dettaglio pratico: se il dataset ha un’etichetta da prevedere è supervisionato, se deve solo trovare una struttura nei dati non lo è.
Pre-processing e pulizia dei dati
Prima di addestrare un modello, i dati vanno quasi sempre scalati o codificati. Scikit-learn mette a disposizione StandardScaler e MinMaxScaler per normalizzare i valori numerici, OneHotEncoder per le variabili categoriche e diversi imputer per riempire i valori mancanti. Questi strumenti seguono lo stesso metodo transform, quindi si inseriscono in una pipeline insieme al modello finale.
Selezione e valutazione dei modelli
La libreria include train_test_split per separare dati di addestramento e di test, cross_validate per la validazione incrociata e GridSearchCV o RandomizedSearchCV per cercare automaticamente i migliori iperparametri. La differenza tra i due strumenti di ricerca è il costo: GridSearchCV prova ogni combinazione della griglia, RandomizedSearchCV ne campiona un numero scelto, quindi costa meno quando i parametri da testare sono tanti. Su come si imposta una validazione incrociata corretta sono entrato più nel dettaglio nell’articolo sulla cross-validation.
Interfaccia consistente
Ogni oggetto di scikit-learn, un modello o un trasformatore, eredita dalla stessa classe base ed espone gli stessi metodi: fit per addestrarsi sui dati, predict per generare una previsione, transform per restituire dati trasformati. Questa coerenza è il motivo per cui si possono incatenare passaggi diversi in una Pipeline e trattarla come un singolo modello, con lo stesso fit e lo stesso predict di un algoritmo preso da solo.
Cosa si può fare con scikit-learn
Scikit-learn copre quasi tutte le fasi di un progetto di analisi dati, dalla preparazione del dataset alla valutazione del modello finale. La tabella riassume le categorie di algoritmi disponibili e un caso d’uso tipico per ciascuna.
| Categoria | Algoritmi principali | Caso d’uso tipico |
|---|---|---|
| Classificazione | Random forest, SVM, regressione logistica, gradient boosting | Filtro antispam, diagnosi assistita |
| Regressione | Ridge, lasso, elastic net, SVR, gradient boosting | Previsione del prezzo di un immobile |
| Clustering | K-means, HDBSCAN, agglomerative clustering | Segmentazione dei clienti di un e-commerce |
| Riduzione della dimensionalità | PCA, t-SNE, feature selection | Compressione dei dati, visualizzazione in 2D |
| Selezione del modello | Cross-validation, GridSearchCV, RandomizedSearchCV | Ottimizzazione degli iperparametri |
| Pre-processing | StandardScaler, MinMaxScaler, OneHotEncoder, imputer | Pulizia e normalizzazione del dataset |
Nei problemi di e-commerce la combinazione classificazione più selezione del modello è tra le più usate: prevedere se un cliente tornerà ad acquistare serve a poco se non si verifica anche quanto il modello è affidabile su dati che non ha mai visto.
Come si installa scikit-learn
Scikit-learn si installa con un singolo comando da terminale, scegliendo tra due gestori di pacchetti. Con pip il comando è pip install -U scikit-learn, che installa automaticamente anche NumPy e SciPy se mancano. Con conda il comando pubblicato dal team del progetto è conda install -c conda-forge scikit-learn; esiste anche la forma abbreviata conda install scikit-learn, che installa dal canale predefinito di Anaconda invece che da conda-forge.
Prima di installare conviene controllare la versione di Python già presente sul sistema: scikit-learn richiede una versione recente dell’interprete, indicata nella pagina di installazione ufficiale della libreria.
Un esempio pratico con scikit-learn
Un primo modello si costruisce in quattro passaggi, sempre con la stessa sequenza indipendentemente dall’algoritmo scelto.
- Si carica un dataset, per esempio quello dei fiori Iris già incluso nella libreria.
- Si divide il dataset in una parte di addestramento e una di test con train_test_split.
- Si crea l’algoritmo scelto, per esempio un RandomForestClassifier, e lo si addestra con fit sui dati di addestramento.
- Si genera una previsione sui dati di test con predict e si misura l’accuratezza con accuracy_score.
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
modello = RandomForestClassifier(n_estimators=100, random_state=42)
modello.fit(X_train, y_train)
y_pred = modello.predict(X_test)
print(accuracy_score(y_test, y_pred))
Lo stesso schema, usato con una Pipeline, evita un errore comune: calcolare media e deviazione standard dello StandardScaler su tutto il dataset invece che solo sul set di addestramento. Farlo sull’intero dataset fa passare informazioni del set di test dentro l’addestramento, il problema che in gergo si chiama data leakage.
Scikit-learn è ancora una scelta valida nel 2026?
Sì, per i problemi su dati tabellari resta tra gli strumenti più usati: in un sondaggio Kaggle del 2022 su quasi 24.000 persone di 173 paesi, scikit-learn è risultato il framework di apprendimento automatico più diffuso tra i rispondenti. La versione attuale, la 1.9.1 dell’11 settembre 2026, arriva dopo la 1.8 di dicembre 2025, che ha introdotto il supporto nativo all’Array API: gli stessi algoritmi possono lavorare anche su array PyTorch o CuPy e sfruttare una GPU, oltre che sugli array NumPy su CPU.
Per i piccoli e-commerce la mia regola è semplice: se il problema si riduce a prevedere un numero o una categoria da dati strutturati, scikit-learn resta la scelta più rapida da mettere in produzione. Per capire dove si colloca nel quadro più ampio aiuta la panoramica sull’intelligenza artificiale pubblicata sul mio sito.
Scikit-learn, TensorFlow o PyTorch: quale scegliere
Dipende dal tipo di modello. Scikit-learn copre gli algoritmi di apprendimento automatico classico su dati tabellari: alberi, SVM, modelli lineari, clustering. Per le reti neurali profonde, dalla visione artificiale all’elaborazione del linguaggio, servono librerie costruite per quello, come TensorFlow, sviluppata da Google Brain, o PyTorch, con i suoi tensori accelerati su GPU. È comune usare scikit-learn per il pre-processing e la valutazione insieme a una libreria di deep learning solo per la parte di rete neurale: non sono strumenti alternativi, coprono fasi diverse dello stesso lavoro.
Casi limite da considerare prima di scegliere scikit-learn
Se il progetto richiede reti neurali profonde
Scikit-learn non include livelli convoluzionali, ricorrenti o ad attenzione: per quelli serve una libreria di deep learning pensata per allenare reti su GPU con molti strati.
Se il dataset supera la memoria disponibile
Gli algoritmi di scikit-learn lavorano in memoria su una sola macchina. Con un dataset più grande della RAM disponibile serve un framework distribuito, come Spark MLlib, oppure un campionamento dei dati prima dell’addestramento.
Se devi portare il modello in produzione
La pratica più comune è salvare l’oggetto addestrato con joblib, la libreria di serializzazione indicata nella documentazione ufficiale di scikit-learn, e ricaricarlo nell’applicazione che genera le previsioni senza riaddestrarlo ogni volta.
Se le variabili di partenza non sono già pronte per un modello
Prima di scegliere l’algoritmo conviene lavorare sulle variabili di input: la trasformazione dei dati grezzi in feature utilizzabili è un passaggio distinto dalla modellazione, descritto nell’articolo sul feature engineering.
Domande frequenti su scikit-learn
Che cos’è scikit-learn?
Scikit-learn è una libreria Python open source per gli algoritmi di apprendimento automatico classico, come classificazione, regressione e clustering. Si distribuisce con licenza BSD e si appoggia su NumPy, SciPy e Matplotlib per il calcolo e i grafici.
Come si installa scikit-learn?
Si installa con pip install -U scikit-learn oppure con conda install -c conda-forge scikit-learn. Entrambi i comandi risolvono automaticamente le dipendenze principali, NumPy e SciPy compresi, senza bisogno di installazioni separate.
Che differenza c’è tra scikit-learn e TensorFlow?
Scikit-learn copre gli algoritmi di apprendimento automatico classico su dati tabellari, mentre TensorFlow è costruito per le reti neurali profonde. Nello stesso progetto si usano spesso insieme, uno per il pre-processing e l’altro per il modello di deep learning.
Scikit-learn è ancora valido nel 2026?
Sì, resta uno degli strumenti più diffusi per i problemi su dati tabellari: in un sondaggio Kaggle del 2022 risultava il framework di apprendimento automatico più usato dai rispondenti, e la versione 1.9.1 del settembre 2026 riceve ancora aggiornamenti regolari.
Scikit-learn supporta la GPU?
Dalla versione 1.8, rilasciata a dicembre 2025, scikit-learn supporta l’Array API e può eseguire alcuni calcoli su array PyTorch o CuPy accelerati da GPU. Nelle versioni precedenti i calcoli restavano su CPU con array NumPy.
Come si salva un modello scikit-learn per la produzione?
Il modo più comune è salvare l’oggetto addestrato con joblib, la libreria di serializzazione indicata nella documentazione ufficiale, e ricaricarlo nell’applicazione che genera le previsioni senza doverlo riaddestrare ogni volta.
Cosa succede se il dataset è troppo grande per la memoria?
Scikit-learn lavora in memoria su una sola macchina, quindi un dataset più grande della RAM disponibile richiede un framework distribuito come Spark MLlib oppure un campionamento dei dati prima dell’addestramento del modello.