Machine Learning con Python: Guida base a scikit-learn per principianti
Il tuo nome La tua email Oggetto Il tuo messaggio (facoltativo) Il Machine Learning è oggi una delle tecnologie più potenti e diffuse nel mondo dell’informatica. Dai sistemi di raccomandazione…

Il Machine Learning è oggi una delle tecnologie più potenti e diffuse nel mondo dell’informatica. Dai sistemi di raccomandazione alle previsioni meteo, dai motori di ricerca all’analisi dei dati finanziari, l’apprendimento automatico è ovunque. In questa guida scoprirai come muovere i primi passi con scikit-learn, la libreria Python più utilizzata per costruire modelli di machine learning.
Cos’è il Machine Learning?

Il Machine Learning (ML) è un insieme di tecniche che permettono a un sistema informatico di apprendere da dati esistenti per compiere previsioni o classificazioni. In altre parole, non si programma esplicitamente ogni singola azione, ma si forniscono al computer esempi (i dati) e un algoritmo per apprendere delle regole utili a generalizzare nuovi casi.
Il Machine Learning si divide in due categorie principali:
- Apprendimento supervisionato: l’algoritmo apprende da dati etichettati (es. immagini di cani e gatti con le rispettive etichette).
- Apprendimento non supervisionato: l’algoritmo cerca schemi nei dati non etichettati (es. clustering o riduzione dimensionale).
Cos’è scikit-learn?
scikit-learn è una libreria open source basata su Python che offre strumenti semplici ed efficienti per l’analisi predittiva dei dati. È costruita sopra NumPy, SciPy e Matplotlib, ed è perfetta per chi vuole iniziare a sperimentare con modelli di classificazione, regressione o clustering, anche con una conoscenza limitata della matematica avanzata.
Con scikit-learn puoi:
- Caricare e analizzare dataset reali o di esempio
- Preprocessare dati e costruire pipeline
- Addestrare modelli e valutarne le prestazioni
- Integrare facilmente altri strumenti come pandas, seaborn e Jupyter
Prerequisiti e installazione
Per seguire questa guida ti serviranno:
- Python 3.8 o superiore
- Conoscenze base di Python (liste, funzioni, import)
- Librerie installate:
scikit-learn
,numpy
,matplotlib
Installa tutto con:
pip install scikit-learn numpy matplotlib
Il flusso di lavoro nel Machine Learning

Ogni progetto di machine learning segue una sequenza di fasi comuni:
- Caricamento dei dati
- Esplorazione e analisi preliminare
- Pulizia e preparazione (preprocessing)
- Suddivisione in dati di addestramento e test
- Scelta del modello e addestramento
- Valutazione delle prestazioni
- Ottimizzazione del modello (se necessario)
- Previsioni su nuovi dati
Vediamolo in pratica con un esempio classico.
Costruiamo un modello: classificazione con il dataset Iris
Il dataset Iris è uno dei più usati per sperimentare. Contiene misurazioni su tre specie di fiori (setosa, versicolor, virginica) in base a lunghezza e larghezza di petali e sepali.
Caricamento del dataset
from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data # Caratteristiche (feature)
y = iris.target # Etichette (target)
Suddivisione del dataset
Separiamo i dati in set di addestramento (80%) e test (20%):
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
Addestramento del modello
Scegliamo il classificatore K-Nearest Neighbors (KNN), semplice ma efficace:
from sklearn.neighbors import KNeighborsClassifier
model = KNeighborsClassifier(n_neighbors=3)
model.fit(X_train, y_train)
Valutazione del modello
Calcoliamo l’accuratezza, cioè la percentuale di previsioni corrette sui dati di test:
accuracy = model.score(X_test, y_test)
print(f"Accuratezza: {accuracy:.2f}")
Previsioni su nuovi dati
Possiamo usare il modello per prevedere la specie di un nuovo fiore:
import numpy as np
nuovo_fiore = np.array([[5.1, 3.5, 1.4, 0.2]])
predizione = model.predict(nuovo_fiore)
print(f"Specie predetta: {iris.target_names[predizione[0]]}")
Metriche di valutazione più avanzate

L’accuratezza non sempre basta. È utile analizzare anche:
- Matrice di confusione
- Precisione
- Recall
- F1-score
from sklearn.metrics import classification_report, confusion_matrix
y_pred = model.predict(X_test)
print(confusion_matrix(y_test, y_pred))
print(classification_report(y_test, y_pred, target_names=iris.target_names))
Introduzione alle pipeline
Con scikit-learn possiamo costruire pipeline che combinano più fasi, come normalizzazione e addestramento, in un unico oggetto facilmente riutilizzabile.
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
pipeline = Pipeline([
('scaling', StandardScaler()),
('classifier', KNeighborsClassifier(n_neighbors=3))
])
pipeline.fit(X_train, y_train)
accuracy = pipeline.score(X_test, y_test)
print(f"Accuratezza con pipeline: {accuracy:.2f}")
Con questa guida hai imparato i fondamenti del machine learning con scikit-learn: caricamento dei dati, addestramento di un modello, valutazione delle prestazioni e previsioni. scikit-learn è solo l’inizio: il passo successivo è esplorare dataset più complessi, confrontare diversi algoritmi e imparare tecniche avanzate come la validazione incrociata o l’ottimizzazione degli iperparametri.
Se desideri continuare, puoi approfondire:
- Regressione lineare e logistica
- Support Vector Machine (SVM)
- Random Forest e alberi decisionali
- Clustering con K-Means o DBSCAN