Cos’è SciKit-Learn: introduzione alle librerie di Python per il Machine Learning

SciKit-Learn è indubbiamente una delle librerie Python più utilizzate nel campo del machine learning. La sua popolarità deriva da diversi fattori, tra cui la semplicità d’uso, la vasta gamma di strumenti offerti e la sua natura open source, che la rende accessibile a chiunque voglia avvicinarsi a questa disciplina in continua evoluzione.

Nata come estensione del progetto SciPy, SciKit-Learn è diventata rapidamente uno standard per lo sviluppo di modelli predittivi grazie alla sua flessibilità e alla compatibilità con altre librerie fondamentali come NumPy, Pandas e Matplotlib.

La libreria è stata progettata con un approccio modulare, offrendo strumenti per la classificazione, la regressione, il clustering, la riduzione della dimensionalità e molto altro. Insomma è una sorta di coltellino svizzero disponibile a chi lavora in questo settore e si rivolge sia a chi è alle prime armi nel mondo del machine learning, sia a professionisti che necessitano di una soluzione robusta per la prototipazione e lo sviluppo di modelli.

Tra le caratteristiche principali di SciKit-Learn spiccano:

  • Un’ampia gamma di algoritmi di apprendimento automatico preimplementati.
  • Funzioni integrate per la pre-elaborazione dei dati, come la normalizzazione e la gestione dei valori mancanti.
  • Strumenti per la validazione incrociata e la valutazione delle performance dei modelli.
  • Compatibilità con formati di dati standard come array NumPy e DataFrame Pandas.

Un ulteriore punto di forza di SciKit-Learn è la sua capacità di integrare metodi avanzati in una struttura semplice e comprensibile, proprio per questo è una libreria adatta sia a chi si affaccia per la prima volta al mondo del machine learning, sia a chi ha già esperienza e necessita di strumenti affidabili per progetti complessi.

Tra l’altro è importante notare che questa libreria si presta non solo alla creazione di prototipi, ma anche a un utilizzo in ambienti di produzione, rendendola una scelta versatile per sviluppatori e data scientist.

Se desideri approfondire più nel dettaglio l’utilizzo di questa libreria, ti invito a visitare il nostro corso di SciKit-Learn per scoprire come sfruttarla al meglio!

Come fare Machine Learning con SciKit-Learn

Fare machine learning con SciKit-Learn significa seguire un workflow ben definito, che va dalla raccolta e pre-elaborazione dei dati fino alla costruzione, addestramento e valutazione dei modelli. Uno degli aspetti più interessanti di questa libreria è la coerenza della sua interfaccia: tutti i modelli seguono la stessa struttura, rendendo il passaggio da un algoritmo all’altro estremamente intuitivo.

In generale, il processo per lavorare con SciKit-Learn può essere suddiviso in diverse fasi:

  1. Preparazione dei dati: questa fase include la raccolta, la pulizia e la trasformazione dei dati. SciKit-Learn offre una vasta gamma di strumenti per gestire valori mancanti, normalizzare i dati e applicare trasformazioni personalizzate.
  2. Selezione del modello: a seconda del problema da risolvere (classificazione, regressione o clustering), si sceglie l’algoritmo più adatto.
  3. Suddivisione dei dati: la funzione train_test_split è spesso utilizzata per dividere i dati in set di addestramento e di test.
  4. Addestramento: con il metodo fit, i modelli vengono addestrati sui dati di training.
  5. Valutazione: SciKit-Learn include metriche standard per valutare le performance dei modelli, come accuracy, precision, recall e F1-score.
  6. Ottimizzazione: per migliorare le performance, si possono utilizzare tecniche come la ricerca degli iperparametri con GridSearchCV o RandomizedSearchCV.

Creare modelli di apprendimento automatico con SciKit-Learn

La creazione di un modello con SciKit-Learn inizia con l’importazione dei dati e la scelta dell’algoritmo più adatto. Per esempio, se stai lavorando su un problema di classificazione binaria, potresti optare per algoritmi come Logistic Regression, Support Vector Machine (SVM) o Random Forest, non esiste ovviamente una scelta migliore dell’altra ma, come sempre, dipende dal contesto specifico e da quello che vogliamo ottenere.

Una volta scelto l’algoritmo, i passi principali sono i seguenti:

  1. Pre-elaborazione dei dati: la libreria offre strumenti come StandardScaler e MinMaxScaler per normalizzare i dati. La normalizzazione è fondamentale per garantire che tutte le caratteristiche abbiano lo stesso peso nel modello, specialmente quando si utilizzano algoritmi sensibili alla scala dei dati, come Support Vector Machines o K-Nearest Neighbors. Inoltre, SciKit-Learn include strumenti per l’imputazione dei valori mancanti (SimpleImputer) e la codifica delle variabili categoriali (OneHotEncoder).
  2. Suddivisione dei dati: è possibile utilizzare la funzione train_test_split per dividere il dataset in dati di addestramento e di test, garantendo una separazione casuale e riproducibile. Un passaggio fondamentale è determinare la proporzione di test (ad esempio, 20% o 30%) in base alla dimensione del dataset e agli obiettivi del progetto. La divisione dei dati consente di valutare il modello su dati mai visti durante l’addestramento, riducendo il rischio di overfitting.
  3. Definizione del modello: gli algoritmi sono disponibili come classi, ad esempio LogisticRegression, RandomForestClassifier o KNeighborsClassifier. Ognuno di questi algoritmi può essere personalizzato attraverso l’uso di parametri, come il numero di alberi in una foresta casuale o il valore di regularizzazione in una regressione logistica. Questa flessibilità consente di adattare il modello alle specificità del problema.
  4. Addestramento: il metodo fit viene utilizzato per addestrare il modello sui dati di training. Durante questa fase, l’algoritmo impara dai dati disponibili per ottimizzare i suoi parametri interni. Per esempio, un modello di regressione logistica calcolerà i coefficienti per ciascuna caratteristica, mentre un Random Forest costruirà più alberi decisionali.
  5. Predizione e valutazione: con i metodi predict e score, è possibile fare previsioni e calcolare metriche di valutazione come accuratezza, precisione, recall e F1-score. SciKit-Learn include inoltre funzioni avanzate per il calcolo delle curve ROC e delle AUC, consentendo una valutazione approfondita delle performance del modello in scenari di classificazione binaria o multiclasse.

Un esempio di codice per un modello di classificazione potrebbe essere il seguente:

from sklearn.model_selection import train_test_split

from sklearn.ensemble import RandomForestClassifier

from sklearn.metrics import accuracy_score

import pandas as pd




# Caricamento dei dati

data = pd.read_csv("dataset.csv")

X = data.drop("target", axis=1)

y = data["target"]




# Suddivisione dei dati

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)




# Definizione e addestramento del modello

model = RandomForestClassifier(random_state=42)

model.fit(X_train, y_train)




# Predizione e valutazione

y_pred = model.predict(X_test)

accuracy = accuracy_score(y_test, y_pred)

print(f"Accuratezza del modello: {accuracy}")

Esempi pratici di utilizzo delle librerie SciKit-Learn

Con SciKit-Learn, puoi affrontare una vasta gamma di problemi, dai più semplici ai più complessi, grazie alla flessibilità e alla varietà di strumenti messi a disposizione. Ecco alcuni scenari comuni, con ulteriori dettagli per ciascun tipo di applicazione:

  • Classificazione: identificare email come spam o non spam è solo un esempio classico; questa tecnica viene utilizzata anche in applicazioni come il riconoscimento di volti, l’analisi del linguaggio naturale per classificare sentimenti nei testi, e persino nei sistemi medici per la diagnosi assistita di malattie basate su sintomi. Algoritmi come Decision Tree, Random Forest o Support Vector Machines sono particolarmente efficaci in questi contesti.
  • Regressione: prevedere i prezzi delle case rappresenta un’applicazione comune, ma la regressione è altrettanto utile in scenari come la previsione di temperature in meteorologia, la stima della domanda di energia elettrica e l’ottimizzazione delle campagne pubblicitarie basata su performance passate. Modelli come Linear Regression e Gradient Boosting Regressor forniscono risultati robusti e interpretabili.
  • Clustering: segmentare i clienti in base ai loro comportamenti di acquisto consente di personalizzare le offerte di marketing. Altri casi pratici includono la rilevazione di anomalie nei dati, come nel settore finanziario per identificare transazioni fraudolente, o la segmentazione di immagini per applicazioni di computer vision. K-Means e DBSCAN sono metodi popolari per queste applicazioni.
  • Riduzione della dimensionalità: questa tecnica è cruciale quando si lavora con dataset ad alta dimensionalità, come quelli utilizzati nel sequenziamento genomico o nei big data. Tecniche come Principal Component Analysis (PCA) e t-SNE aiutano non solo a ridurre il carico computazionale, ma anche a visualizzare meglio i dati in spazi bidimensionali o tridimensionali.
  • Analisi predittiva avanzata: modelli ensemble come Random Forests o Gradient Boosting sono ideali per affrontare problemi complessi che richiedono un bilanciamento tra accuratezza e robustezza. Questi metodi vengono spesso usati in competizioni di data science, dove l’obiettivo è ottenere il massimo dalle prestazioni predittive.

Se vuoi imparare a creare modelli avanzati, dai un’occhiata ai nostri corsi in machine learning per migliorare le tue competenze.

Le librerie di Python più utilizzate per il Machine Learning

Ovviamente SciKit-Learn non è l’unica  libreria che abbiamo a disposizione con python, anzi, python è considerato il linguaggio di riferimento per il machine learning grazie anche alla vasta gamma di librerie e framework che mette a disposizione. Ma tra queste, SciKit-Learn sicuramente si distingue per la sua semplicità e completezza! Come sempre però è importante conoscere anche quale sono le altre opzioni a disposizione per scegliere quella più adatta alle tue esigenze.

Confronto tra SciKit-Learn e altre librerie di Machine Learning

Ecco un confronto tra SciKit-Learn e alcune delle librerie più utilizzate:

  • TensorFlow: ideale per il deep learning e i modelli basati su reti neurali, TensorFlow offre un ampio ecosistema di strumenti e funzionalità per la creazione di reti neurali avanzate, rendendolo una scelta privilegiata per i progetti di intelligenza artificiale più complessi.
  • PyTorch: noto per la sua flessibilità e il supporto a tecniche sperimentali, è particolarmente apprezzato nella ricerca accademica e negli ambienti innovativi. La sua natura dinamica lo rende ideale per chi desidera avere un maggiore controllo sui modelli.
  • Keras: progettata per essere user-friendly, Keras funge da interfaccia ad alto livello per TensorFlow. È perfetta per chi vuole iniziare rapidamente con il deep learning senza immergersi nei dettagli tecnici.
  • XGBoost: una libreria estremamente potente per la regressione e la classificazione, spesso utilizzata nelle competizioni di machine learning grazie alla sua velocità ed efficacia. Si distingue per la capacità di gestire dataset di grandi dimensioni con performance ottimali.
  • LightGBM: pensata per l’efficienza, questa libreria eccelle nell’elaborazione di dataset massicci e è particolarmente adatta per modelli basati su gradient boosting.

Rispetto a queste librerie, SciKit-Learn si distingue per essere una soluzione più leggera, versatile e facilmente integrabile. Nonostante non sia progettata per il deep learning, offre un set completo di algoritmi tradizionali di machine learning, ideale per analisi dati, prototipazione rapida e insegnamento. Inoltre, SciKit-Learn è supportata da una documentazione esaustiva e una vasta community che contribuisce al miglioramento costante della libreria.

La scelta tra SciKit-Learn e le altre librerie dipende principalmente dal tipo di progetto e dalle necessità specifiche. Per applicazioni che richiedono l’addestramento di reti neurali profonde, TensorFlow o PyTorch possono essere la scelta migliore. Per problemi che coinvolgono grandi dataset tabulari, XGBoost o LightGBM sono eccellenti opzioni. Tuttavia, per soluzioni di machine learning più tradizionali, prototipazione e progetti accademici, SciKit-Learn rimane una scelta imbattibile.

Vuoi approfondire le differenze tra queste librerie? Scopri il nostro masterclass in Machine Learning per la data science.

Come installare SciKit-Learn: guida passo-passo

Come molto spesso accade per le librerie che abbiamo a disposizione in python, installare SciKit-Learn è un processo semplice che può essere completato in pochi minuti. Segui questa guida per configurare l’ambiente e iniziare a lavorare.

Installazione e configurazione su diversi ambienti di sviluppo

Per installare SciKit-Learn, è sufficiente utilizzare il comando pip, che è il gestore di pacchetti standard di Python. Ecco i passi:

  1. Assicurati di avere Python installato: verifica la versione digitando python –version nel terminale.
  2. Crea un ambiente virtuale (opzionale ma consigliato):

python -m venv myenv

source myenv/bin/activate  # Su Windows usa myenv\Scripts\activate
  1. Installa SciKit-Learn:
pip install scikit-learn
  1. Verifica l’installazione:
python -c "import sklearn; print(sklearn.__version__)"

Se preferisci lavorare in un ambiente come Jupyter Notebook, assicurati di installare anche notebook e ipykernel.

Verifica dell’installazione e primo esempio di utilizzo

Una volta completata l’installazione di SciKit-Learn, è utile eseguire un esempio semplice per verificare che tutto funzioni correttamente. Supponiamo di voler costruire un modello di classificazione utilizzando il famoso dataset Iris, già incluso in SciKit-Learn:

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




# Caricamento del dataset Iris

data = load_iris()

X = data.data

y = data.target




# Suddivisione dei dati

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)




# Definizione del modello

model = RandomForestClassifier(random_state=42)

model.fit(X_train, y_train)




# Predizioni

predictions = model.predict(X_test)

accuracy = accuracy_score(y_test, predictions)




print(f"Accuratezza del modello sul dataset Iris: {accuracy:.2f}")

Conclusioni

Insomma, SciKit-Learn si distingue come una delle librerie più importanti e versatili nella cassetta degli attrezzi di chi si occupa di Data Science e Machine Learning.

Grazie alla sua semplicità d’uso, alla vasta gamma di algoritmi pre implementati e alla sua capacità di gestire flussi di lavoro complessi, SciKit-Learn rappresenta un punto di partenza ideale per principianti e uno strumento affidabile per professionisti.

Che tu stia lavorando su progetti di classificazione, regressione o clustering, questa libreria offre tutte le funzionalità necessarie per prototipare e perfezionare modelli di machine learning con efficienza e precisione. Inoltre, il supporto della community e la documentazione esaustiva rendono l’apprendimento e l’implementazione di SciKit-Learn un’esperienza fluida e produttiva.

Ovviamente anche questa libreria ha dei limiti e quando vogliamo fare cose più avanzate potrebbe avere più senso passare ad altre librerie, come TensorFlow o PyTorch.

Se l’argomento di questo articolo ti interessa e se vuoi andare oltre, allora ti consigliamo di dare un’occhiata al nostro corso di Machine Learning: la Machine Learning Masterclass è la porta d’accesso alle skill del futuro, è il corso in italiano 100% ONLINE più completo ed aggiornato per diventare un professionista in ambito Intelligenza Artificiale, Machine Learning e Data Science.

Un percorso didattico in modalità di fruizione mista: più di 60 ore di lezioni online sempre disponibili e più di 35 ore live con i docenti (fuori dagli orari di lavoro) in cui esercitarsi e chiarire ogni dubbio.

Un corso di poco più di 3 mesi che unisce la teoria a una forte impronta pratica, con esercitazioni su casi d’uso reali su Jupyter Notebook.

Simone Truglia

AUTORE:Simone Truglia Apri profilo LinkedIn

Simone è un Ingegnere Informatico con specializzazione nei sistemi automatici e con una grande passione per la matematica, la programmazione e l’intelligenza artificiale. Ha lavorato con diverse aziende europee, aiutandole ad acquisire e ad estrarre il massimo valore dai principali dati a loro disposizione.