Marco Consiglio · Istituto Volta Data Science per Principianti Edizione 2025 · Livello 0

Guida Zero · Nessun prerequisito richiesto

La Data Science
spiegata a chi
non sa nulla.

Questa guida parte da zero. Non servono formule matematiche, non servono anni di studio. Bastano curiosità e voglia di capire come funziona il mondo dei dati.

Cosa imparerai

01 · Definizione

Cos'è la Data Science?

In tre parole: trovare significato nei dati. Un Data Scientist è come un detective: usa i dati come indizi per rispondere a domande di business, prevedere il futuro o automatizzare decisioni.

💡 Analogia del quotidiano

Immagina di gestire un negozio. Ogni giorno entrano clienti, comprano cose, tornano o spariscono. Se tieni un registro di tutto questo, puoi rispondere a domande come: «Chi rischia di non tornare?» o «Quale prodotto venderò di più il prossimo mese?». Questo è esattamente ciò che fa un Data Scientist — ma con milioni di "negozi" e miliardi di righe di dati.

🔍

Analisi Descrittiva

Risponde alla domanda: «Cosa è successo?»
Si guardano i dati storici per capire pattern, tendenze e anomalie.

Esempio: «Quanti clienti abbiamo perso negli ultimi 6 mesi e da quale regione?»
🔮

Analisi Predittiva

Risponde alla domanda: «Cosa succederà?»
Si usano i dati passati per fare previsioni sul futuro.

Esempio: «Questo cliente abbandonerà il servizio entro 30 giorni?»
⚙️

Analisi Prescrittiva

Risponde alla domanda: «Cosa dovremmo fare?»
Il modello suggerisce la migliore azione da intraprendere.

Esempio: «Offri uno sconto del 15% a questi 200 clienti specifici per tenerli.»
🤖

Machine Learning

Il computer impara dai dati senza essere programmato caso per caso. Trova da solo le regole che descrivono il fenomeno.

Esempio: «Guarda 10.000 transazioni e impara a riconoscere quelle fraudolente.»

«Un Data Scientist non inventa la verità: la trova dentro i dati che già esistono.»

— Principio fondamentale della Data Science

02 · Vocabolario

Il Dizionario del Data Scientist

Il settore usa molti termini tecnici in inglese. Ecco i 12 più importanti, spiegati come se avessi 10 anni.

Dataset Il Foglio di Dati

Una tabella con righe (osservazioni) e colonne (caratteristiche). Come un foglio Excel ma con migliaia o milioni di righe.

→ Il file CSV con 800 clienti è il nostro dataset.

Feature La Caratteristica

Una singola colonna del dataset: un'informazione su ogni riga. Sono le variabili di input che il modello usa per imparare.

→ Età, fatturato, regione sono tutte feature.

Target / Label La Risposta

La colonna che vogliamo prevedere. È il "voto" che il modello cerca di indovinare per ogni riga.

→ churn (0=rimane, 1=abbandona) è il nostro target.

Model / Modello La Formula Imparata

Un algoritmo addestrato sui dati. Prende le feature in input e restituisce una previsione. È la "ricetta" che il computer ha imparato.

→ Random Forest è un tipo di modello.

Training L'Allenamento

La fase in cui il modello studia i dati storici per imparare le regole. Come studiare per un esame.

→ Usiamo l'80% dei dati per il training.

Test Set L'Esame Finale

La porzione di dati nascosta durante il training. Serve a verificare quanto il modello sa generalizzare su dati mai visti.

→ Il 20% dei dati tenuto da parte per testare.

Overfitting Il Memorizzatore

Il modello ha "memorizzato" i dati di training ma non sa generalizzare. Va benissimo sui dati noti, malissimo sui nuovi.

→ Come uno studente che impara tutto a memoria ma non capisce.

Underfitting Il Superficiale

Il modello è troppo semplice e non riesce a cogliere i pattern nei dati. Va male sia sul training che sul test.

→ Come uno studente che non ha studiato abbastanza.

NaN / Null Il Valore Mancante

Una cella vuota nel dataset: l'informazione non c'è. Bisogna decidere come gestirla (rimuoverla, sostituirla con la media, ecc.).

→ Nel CSV: alcune celle di "score_soddisfazione" sono vuote.

Outlier Il Valore Anomalo

Un valore estremo che si discosta molto dagli altri. Può essere un errore di inserimento o un dato reale ma raro.

→ Un fatturato di €50.000.000 in un dataset di PMI è un outlier.

Accuracy La Precisione Globale

Percentuale di previsioni corrette sul totale. Attenzione: non è sempre la metrica giusta, soprattutto su classi sbilanciate.

→ 85% accuracy = 85 su 100 previsioni corrette.

Pipeline La Catena di Montaggio

Una sequenza di passi trasformazione dati → modello automatizzata in modo che nessuno step venga "saltato" o applicato nel posto sbagliato.

→ Carica → Pulisci → Trasforma → Addestra → Valuta.

03 · Processo

La Pipeline: i 7 passi di ogni progetto

Ogni progetto Data Science, dal più semplice al più complesso, segue sempre la stessa sequenza. Questi sono i passi che farai in ogni esercizio del corso.

pandas

Caricamento dati

Si legge il file (CSV, Excel, database, API) e si trasforma in una struttura tabellare leggibile da Python. In questa fase si scopre quante righe, colonne e tipi di dati ci sono.

EDA

Analisi Esplorativa (EDA)

Si "guarda" il dataset con statistiche e grafici. Quanti NaN ci sono? Ci sono outlier? Le distribuzioni hanno senso? È la fase del detective: si raccolgono informazioni prima di agire.

pandas · numpy

Data Cleaning

Si sistemano i problemi trovati: si riempiono i valori mancanti, si eliminano i duplicati, si correggono i valori impossibili. I dati sporchi producono modelli bugiardi.

Feature Engineering

Costruzione delle Feature

Si creano nuove colonne più informative a partire da quelle esistenti. Per esempio: dalla data di acquisizione si calcola "quanti giorni è cliente?" — informazione molto più utile di una data grezza.

sklearn

Preprocessing

Si trasformano i dati nel formato che gli algoritmi capiscono: le variabili testuali diventano numeri (encoding), le variabili numeriche vengono portate sulla stessa scala (scaling).

ML · sklearn

Addestramento del Modello

Si sceglie un algoritmo (es. Random Forest), gli si mostrano i dati di training e "impara" i pattern. Il modello ora sa fare previsioni su dati nuovi.

Metriche

Valutazione

Si misura quanto bene il modello funziona sui dati di test (che non ha mai visto). Si usano metriche specifiche per il tipo di problema. Se non funziona bene, si torna al passo 4 o 5.

04 · Tipologie

Capire i Tipi di Dati

Non tutti i dati sono uguali. Riconoscere il tipo di dato è fondamentale perché ogni tipo richiede un trattamento diverso.

TipoCos'èEsempio nel CSVCome si trattaIn Python
Numerico Continuo Può assumere qualsiasi valore reale fatturato_annuo, score_soddisfazione Scaling, normalizzazione, gestione outlier float64
Numerico Intero Solo numeri interi, spesso contatori numero_acquisti, eta, num_reclami Spesso ok così; attenzione a range anomali int64
Categorico Nominale Categorie senza ordine tra loro regione, settore, genere Label Encoding o One-Hot Encoding object / category
Categorico Ordinale Categorie con ordine preciso livello_fidelizzazione (Junior→Senior) Label Encoding con mappa numerica esplicita object / category
Data / Tempo Istante temporale specifico data_acquisizione, data_ultimo_acquisto Estrarre anno, mese, giorno, differenza tra date datetime64
Binario / Booleano Solo due valori: 0/1 oppure Vero/Falso churn, campagna_attiva, vip Spesso è il target; usare class_weight se sbilanciato int64 / bool

💡 Perché lo scaling è importante?

Immagina di confrontare l'altezza di una persona (170 cm) con il suo stipendio (2.500 €). Se dai queste due variabili "crude" a un algoritmo, lo stipendio domina semplicemente perché ha numeri più grandi. Lo scaling porta tutto sulla stessa "taglia". È come convertire mele e arance in una scala comune prima di confrontarle.

05 · Algoritmi ML

I Principali Algoritmi Spiegati Semplicemente

Ogni algoritmo ha una "logica umana" dietro. Capire questa logica aiuta a scegliere quello giusto per ogni problema.

📏

Regressione Logistica

Trova la "linea di confine" che separa due gruppi. Semplice, veloce, interpretabile. Il punto di partenza ideale per la classificazione.

Analogia: Un esame: sopra 60 punti = promosso, sotto = bocciato. La logistic regression trova quella soglia ottimale nei dati.
🌳

Albero Decisionale

Una serie di domande Sì/No sui dati che porta a una decisione finale. Come un diagramma di flusso imparato dai dati.

Analogia: «Ha più di 3 reclami? → Sì → Fatturato basso? → Sì → CHURN probabile.» Esattamente così funziona.
🌲🌲🌲

Random Forest

Crea centinaia di alberi decisionali su porzioni casuali del dataset e li mette ai voti. La risposta è quella della maggioranza.

Analogia: Invece di chiedere a un solo esperto, chiedi a 200 esperti diversi e segui il parere della maggioranza. Molto più affidabile.
🚀

XGBoost

Crea alberi in sequenza: ogni albero corregge gli errori del precedente. Uno dei modelli più potenti per dati tabellari.

Analogia: Un team di revisori: il secondo corregge i refusi del primo, il terzo corregge quelli del secondo. Il risultato finale è quasi privo di errori.
🔵🔵

K-Means Clustering

Raggruppa automaticamente i dati in K gruppi simili tra loro. Non ha un target: trova pattern senza supervisione.

Analogia: Spargi 800 biglie sul pavimento e raccogli quelle vicine in K mucchi. K-Means trova i centri dei mucchi in modo ottimale.
📈

Regressione Lineare / Ridge

Prevede un numero continuo (non una categoria). Trova la relazione lineare tra feature e target. Ridge aggiunge una "penalità" per evitare overfitting.

Analogia: Stimare il prezzo di una casa in base ai metri quadri. La riga che si avvicina meglio a tutti i punti è la regressione lineare.
AlgoritmoTipo problemaProControQuando usarlo
Logistic Regression Classificazione Veloce, interpretabile Solo relazioni lineari Baseline, dati limitati
Random Forest Classificazione / Regressione Robusto, gestisce NaN Lento su dataset enormi Primo modello serio
XGBoost Classificazione / Regressione Molto preciso Più parametri da ottimizzare Massimizzare performance
K-Means Clustering (non supervisionato) Semplice, veloce K va scelto a mano Segmentazione clienti
Ridge Regression Regressione Stabile, evita overfitting Solo numeri in output Prevedere valori continui

06 · Metriche

Come si valuta un modello?

L'accuracy (precisione) non basta. Serve sapere come e dove sbaglia il modello, non solo quante volte sbaglia.

💡 Il paradosso dell'accuracy

Supponi che su 100 clienti, 95 non abbandonano e solo 5 abbandonano. Un modello che risponde sempre "non abbandona" ha il 95% di accuracy ma non trova mai chi abbandona davvero. È inutile. Per questo esistono metriche migliori.

🎯

Precision (Precisione)

Delle previsioni "abbandona" che ho fatto, quante erano corrette?

Alta precision = quando dico che abbandona, ci azzecco quasi sempre. Pochi falsi allarmi.
🔭

Recall (Recupero)

Di tutti quelli che veramente abbandonano, quanti ne ho trovati?

Alto recall = trovo quasi tutti quelli che abbandonano. Perdo pochi casi reali.
⚖️

F1 Score

La media armonica tra Precision e Recall. Un unico numero che bilancia entrambe le metriche.

F1 alto = il modello è buono sia a trovare i casi positivi che a non segnalare falsi allarmi.
📊

AUC-ROC

Misura quanto bene il modello separa le due classi. Va da 0.5 (casuale) a 1.0 (perfetto).

AUC = 0.85 = il modello distingue bene chi abbandona da chi rimane nel 85% dei casi.
📉

RMSE (per regressione)

Root Mean Squared Error: l'errore medio delle previsioni numeriche, nella stessa unità del target.

RMSE = 5.000€ = in media le previsioni di fatturato si sbagliano di ±5.000€.
🔄

Cross-Validation

Si dividono i dati in 5 blocchi (fold). Si addestra 5 volte, ogni volta usando un blocco diverso come test. La media è più affidabile di una singola prova.

Analogia: Fare un esame 5 volte con domande diverse e fare la media dei voti.

07 · Python

I Primi 10 Comandi Python da Conoscere

Non serve sapere programmare. Questi 10 comandi coprono il 90% delle operazioni che farai nel corso.

01 · Caricare il dataset
import pandas as pd

# Carica il file CSV in una tabella (DataFrame)
df = pd.read_csv("ds_esercizi_800.csv")

# Quante righe e colonne?
print(df.shape)         # → (800, 24)

# Mostra le prime 5 righe
print(df.head())

# Mostra i tipi di dati
print(df.dtypes)
02 · Esplorare i dati
# Statistiche base (media, min, max, ecc.)
df.describe()

# Contare i valori mancanti per colonna
df.isnull().sum()

# Quanti clienti per ogni regione?
df["regione"].value_counts()

# Tasso medio di churn per settore
df.groupby("settore")["churn"].mean()
03 · Filtrare i dati
# Solo clienti che hanno abbandonato (churn=1)
df_churned = df[ df["churn"] == 1 ]

# Clienti del Nord con fatturato > 100.000
filtro = (df["regione"] == "Nord") & (df["fatturato_annuo"] > 100_000)
df_nord_vip = df[filtro]

# Selezionare solo alcune colonne
df_mini = df[["id_cliente", "eta", "churn"]]
04 · Creare nuove colonne
import numpy as np
from datetime import date

# Calcolo anzianità cliente in giorni
oggi = pd.Timestamp(date.today())
df["anzianita_giorni"] = (oggi - df["data_acquisizione"]).dt.days

# Flag clienti VIP (sopra 80° percentile)
soglia = df["fatturato_annuo"].quantile(0.80)
df["vip"] = (df["fatturato_annuo"] >= soglia).astype(int)
05 · Addestramento modello (completo)
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report

# Scegli le colonne di input e quella da prevedere
X = df[["eta", "numero_acquisti", "tasso_retention"]]
y = df["churn"]

# Dividi: 80% training, 20% test
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.20, random_state=42
)

# Addestra il modello
modello = RandomForestClassifier(n_estimators=100, random_state=42)
modello.fit(X_train, y_train)

# Valuta sul test set
y_pred = modello.predict(X_test)
print(classification_report(y_test, y_pred))

08 · Attenzione

Gli Errori che Fanno Tutti all'Inizio

Non è una lista di colpe: sono le trappole in cui cade chiunque cominci. Saperle riconoscere è già metà della soluzione.

⚠️

Guardare solo l'accuracy

Un dataset sbilanciato (es. 95% non-churn, 5% churn) fa sembrare ottimo un modello che risponde sempre "non-churn". Usare sempre anche F1 e AUC-ROC.

🔓

Data Leakage

Usare il test set per addestrare (anche indirettamente, es. calcolando la media su tutto il dataset prima dello split). Il modello "imbroglia" e sembra migliore di quanto è davvero.

🎲

Non fissare il random_state

Senza un seed fisso ogni esecuzione dà risultati diversi. Non si riesce a riprodurre l'esperimento né a confrontare due modelli in modo equo.

🗑️

Eliminare i NaN senza pensare

Cancellare tutte le righe con valori mancanti sembra la soluzione più semplice, ma se il 30% dei dati ha almeno un NaN, si perde troppe informazioni. Meglio imputare con la mediana.

🏋️

Usare subito il modello più complesso

XGBoost non è sempre la risposta migliore. Iniziare sempre con un modello semplice come baseline. Se il semplice già funziona bene, non serve il complesso.

🤷

Non capire i dati prima di modellarli

Saltare l'EDA per "arrivare subito al modello" è l'errore più costoso. Un'ora di esplorazione dati evita settimane di debug sui modelli.

09 · Percorso

La Roadmap: da Zero a Data Scientist

Un percorso realistico in 4 fasi. Non è una corsa: la comprensione profonda di ogni fase vale più della velocità.

Fase 1 · Fondamenta

Python & Dati

  • Python base (variabili, loop, funzioni)
  • pandas: DataFrame, filtraggio, groupby
  • numpy: array, operazioni vettoriali
  • matplotlib / seaborn: grafici base
  • CSV, Excel, JSON: leggere file
  • Statistica descrittiva

Fase 2 · Machine Learning

Modelli Base

  • sklearn: Pipeline, split, metriche
  • Classificazione: Logistic, RF
  • Regressione: Linear, Ridge
  • Clustering: K-Means
  • Feature Engineering
  • Cross-validation

Fase 3 · Avanzato

Performance

  • XGBoost, LightGBM
  • Hyperparameter tuning (GridSearch)
  • SHAP: interpretabilità modelli
  • Imbalanced data (SMOTE)
  • Feature selection
  • SQL per l'analisi dati

Fase 4 · Professionale

Produzione

  • ML in produzione con API (FastAPI)
  • Docker e ambienti virtuali
  • MLflow: tracking esperimenti
  • Dashboard (Streamlit, Plotly)
  • Cloud: AWS / GCP / Azure base
  • Portfolio su GitHub

10 · Verifica

Quiz di Autoverifica

Testa quello che hai capito. Rispondi senza rileggere: se sbagli, torna alla sezione corrispondente.

📝 Verifica di Comprensione · Livello 0

D1. Hai un dataset con 1.000 clienti: 950 non fanno churn, 50 sì. Il tuo modello prevede "non-churn" per tutti. Qual è l'accuracy?

D2. Cosa significa "data leakage"?

D3. Qual è la differenza tra Precision e Recall?

D4. Perché si usa lo scaling (StandardScaler) sulle feature numeriche?

D5. Cos'è K-Means?