Panoramica degli Strumenti AI: Python, Colab e Stack
Dal perché Python domina l'AI al tuo primo notebook operativo: l'ecosistema completo spiegato come se dovessi usarlo domani in laboratorio.
1. Perché Python per l'AI? Il mito della velocità
Python domina l'AI non perché è veloce come interprete, ma perché fa da "colla" semplicissima tra librerie C/C++/CUDA ultra-ottimizzate. L'ecosistema si auto-rinforza: più gente lo usa, più librerie nascono in Python.
Potremmo fare AI in qualunque linguaggio. Python è oggi uno dei linguaggi più utilizzati nell'AI/ML, grazie soprattutto alla disponibilità di librerie e strumenti specializzati. Non è una moda passeggera. È una combinazione storica, pratica e di ecosistema che io vedo ogni giorno in aula.
Librerie ovunque
NumPy, SciPy, Pandas, Scikit-learn, PyTorch, TensorFlow sono nate in Python. Una nuova libreria entra automaticamente in un mondo coerente e interoperabile.
Il flusso esplorativo
Jupyter (2014) ha unito codice, output, grafici e testo nello stesso documento.
Lento fuori, missile dentro
Python è lento come interprete, ma NumPy e PyTorch girano in C e CUDA. La tua lentezza non tocca mai il calcolo numerico pesante.
Io ho pensato di fare così quando spiego Python ai miei: vi faccio scrivere la stessa operazione su array in Python puro (un for lento) e poi in NumPy (una riga vettorizzata). Vedete con i vostri occhi il 100x di differenza. Da lì capite subito: Io lo farei così sempre → Python per la logica, NumPy per i numeri.
Python vs alternative: quando usare cosa
| Linguaggio | Punti di forza AI | Quando preferirlo | Quando evitarlo |
|---|---|---|---|
| Python | Ecosistema completo, notebook, community enorme, prototipazione rapida | Quasi sempre — ricerca, prototipi, produzione ML | Sistemi embedded con memoria/latenza critica |
| R | Statistica classica, ggplot2, bioinformatica | Analisi statistica pura, paper medicina | Deep learning, web app, produzione |
| Julia | Velocità nativa, calcolo scientifico HPC | Simulazioni numeriche intensive | Ecosistema AI ancora immaturo |
| C++ / CUDA | Massima performance, controllo hardware low-level | Inferenza ottimizzata, kernel custom GPU | Prototipazione e ricerca flessibile |
Dire "Python è lento quindi non va bene per l'AI". Errore madornale che sento all'esame. Se fosse vero, non girerebbero ChatGPT e Stable Diffusion su stack Python. La lentezza è dell'interprete, non delle librerie C/C++ che fanno i conti veri.
2. Jupyter Notebook e Google Colab: il laboratorio nel browser
Jupyter Notebook è il formato standard per la data science interattiva. Un notebook è un file JSON .ipynb che contiene una sequenza di celle: ogni cella può essere codice Python eseguibile o testo in Markdown. Output — tabelle, grafici, errori — restano salvati inline.
Pensa al quaderno di laboratorio di fisica: a sinistra appunti, a destra misure e grafici. Jupyter è uguale: cella Markdown = la tua spiegazione, cella Code = l'esperimento, sotto = il risultato che non devi ricopiare a mano. In Colab tutto questo gira su server Google.
Google Colab = Jupyter Notebook nel browser + GPU NVIDIA T4 gratuita + zero installazioni. Accessibile da colab.research.google.com con account Google.
| Funzione | Come si fa | Nota del prof |
|---|---|---|
| Nuovo notebook | colab.research.google.com → File → New notebook | Salvato auto su Drive |
| Runtime GPU | Runtime → Change runtime type → T4 GPU | Gratis con limite ore/giorno |
| Mount Drive | from google.colab import drive; drive.mount('/content/drive') | Io ho pensato di fare così: monto sempre Drive a inizio lezione |
| Installa pacchetti | !pip install nome_pacchetto | Il ! lancia shell, ma dura solo la sessione |
| Carica file | from google.colab import files; files.upload() | O drag&drop nel pannello sinistra |
| Esegui cella | Shift+Enter | Esegue e passa alla successiva |
| Nuova cella | Ctrl+M poi B (below) | A=above, B=below — lo chiedo sempre in verifica |
Io lo farei così con voi: prima lezione tutti su Colab, niente installazioni locali che si rompono. Creiamo cartella /MyDrive/AI-L1-M1/ e salviamo tutto lì. Perché? Ve lo dico ora: le sessioni Colab durano max ~12 ore e /content/ viene cancellato. Se non salvate su Drive, domani non avete più nulla. L'ho visto succedere troppe volte.
Lavorare ore in /content/ senza montare Drive e poi chiudere il browser. File persi. Sempre. Io ho pensato di mettere un promemoria nella prima cella di ogni notebook: "# RICORDA: monta Drive all'inizio!".
3. Lo stack Python per l'AI — la mappa completa a 5 livelli
Lo stack AI non è una lista piatta di librerie. È una piramide: ogni livello dipende da quelli sotto. Capire la mappa evita di usare un cannone per uccidere una mosca (es. PyTorch quando bastava Scikit-learn).
| Libreria | A cosa serve davvero | Quando la usi |
|---|---|---|
| NumPy | Array N-dimensionali veloci, operazioni vettoriali | Base di tutto. Senza NumPy non funziona nulla |
| Pandas | DataFrame, pulizia dati, merge, groupby | Quando i dati sono tabelle (CSV, Excel) |
| Matplotlib / Seaborn | Grafici, istogrammi, heatmap | Esplori i dati prima di modellarli |
| Scikit-learn | Classificazione, regressione, clustering, pipeline | 90% dei task di ML classico - API fit/predict |
| TensorFlow / PyTorch | Reti neurali profonde, GPU, autograd | Solo quando serve deep learning (immagini, testo complesso) |
| HuggingFace | Modelli pre-addestrati (BERT, GPT, ViT, Whisper) | NLP, CV, audio con transfer learning |
Io ho pensato di fare così per farvelo memorizzare: vi dico sempre "Regola del 90%". Per molti progetti introduttivi e numerosi problemi di ML classico, questo insieme di strumenti costituisce una base molto efficace. Solo quando questi non bastano, salgo al livello 4. Non iniziate da PyTorch solo perché fa figo. Iniziate da dove serve davvero. Io lo farei così anche all'esame: partito da Scikit-learn, poi motivato il passaggio a Deep Learning.
4. Primo notebook: il tuo "hello world" con Iris
Il classico primo esperimento è addestrare un classificatore sul dataset Iris: 150 misurazioni di petali e sepali di 3 specie. Con Scikit-learn sono meno di 20 righe e capisci subito il flusso train/test.
train_test_split: separo i dati in addestramento e test. Il modello non vedrà mai i dati di test durante il training — servono solo per misurare performance reali. random_state=42 garantisce riproducibilità.
model.fit(): è qui il Machine Learning vero: il Decision Tree analizza X_train e y_train, costruisce l'albero minimizzando l'impurità.
model.predict(): applica il modello addestrato a dati nuovi. Se accuracy è ~96% su Iris, il modello sta generalizzando.
Io lo farei così in verifica pratica: vi do un CSV sporco (valori mancanti, una colonna categorica). Prima lo pulite con Pandas (dropna o fillna), poi train_test_split con random_state=42 come vi ho insegnato, poi DecisionTree e stampate accuracy. Se sbagliate random_state o vi dimenticate di montare Drive, vi tolgo punti ma vi riporto a casa lo stesso schema. Io ho pensato di fare così anche per rendervi autonomi da subito.
5. Dataset pubblici: dove trovare i dati buoni
Un modello ML è buono quanto i dati su cui viene addestrato. Buona notizia: esistono migliaia di dataset pubblici gratuiti e già puliti, perfetti per imparare.
Il più realistico
Migliaia di dataset, competizioni con premi, notebook pubblici. API per scaricare in Colab: !kaggle datasets download -d user/dataset
Il più accademico
650+ dataset storici (Iris, Wine, Breast Cancer) dal 1987. Citabili, ben documentati. Perfetto per sperimentare algoritmi.
Il più NLP/CV
50k+ dataset per testo, immagini, audio. Una riga: from datasets import load_dataset; ds = load_dataset("imdb")
| Piattaforma | Cosa trovi | Comando utile in Colab |
|---|---|---|
| Kaggle | Dataset sporchi realistici, competizioni | !kaggle datasets download -d username/dataset-name --unzip |
| UCI ML Repo | Dataset classici accademici | pd.read_csv(url) diretto dal sito UCI |
| HuggingFace Datasets | NLP, CV, audio moderni | load_dataset("imdb") / load_dataset("mnist") |
| Google Dataset Search | Motore di ricerca aggregato | Trovi dataset per "air quality Italy" ecc. |
Scaricare il primo CSV trovato e addestrare subito senza esplorare. Sempre prima: df.head(), df.info(), df.describe(), df.isnull().sum() e un grafico. Io lo chiedo all'orale e bocchio chi non lo fa.
6. Decision tree: quale libreria usare davvero?
Domanda che mi fate sempre: "Prof, quale libreria uso?". Io ho pensato di rispondervi con un albero decisionale, così non vi perdete.
✓ Dataset >100k righe, accuracy critica → XGBoost / LightGBM
Testo → HuggingFace Transformers (BERT, GPT ecc.)
Audio → HuggingFace + Whisper oppure librosa
Ambiente / gioco → Gymnasium + Stable-Baselines3
Vi do un caso: "Devo classificare email spam/ham". Voi subito direte "BERT!". Io ho pensato di fare così: fermiamo tutti. Hai 10k email in tabella con TF-IDF? Basta Logistic Regression di Scikit-learn, 2 minuti e 95% accuracy. Passare a HuggingFace subito è come usare un tir per portare una busta. Io lo farei così sempre: semplice prima, complesso dopo solo se motivato.
7. Verifica / Esercizio pratico
🔬 Lab Colab — Obiettivo operativo
Crea un notebook Colab chiamato L1-M1-L04-Cognome.ipynb e completa:
- Monta Drive con
drive.mounte crea cartella AI-L1-M1 - Installa se serve: controlla versioni di numpy, pandas, sklearn con
import sklearn; sklearn.__version__ - Carica Iris con
load_iris(), converti in DataFrame Pandas e mostra head + info + describe - Fai train_test_split (test_size=0.2, random_state=42), addestra DecisionTree max_depth=3, calcola accuracy
- Aggiungi 2 grafici con matplotlib: istogramma di una feature e scatter plot sepal_length vs sepal_width colorato per target
- Scarica un dataset da Kaggle (es. Titanic) con API Kaggle e mostra prime 5 righe — salva tutto su Drive
Io ho pensato di valutare così: 2 punti per mount Drive corretto + salvataggio (senza questo è 0), 2 punti per esplorazione Pandas completa (head/info/describe/null), 3 punti per pipeline Iris corretta con random_state=42 e accuracy stampata, 2 punti per grafici leggibili con label assi, 1 punto per download Kaggle riuscito. Se usi PyTorch per Iris ti tolgo 1 punto: non è lo strumento giusto. Io lo farei così anche per abituarvi a scegliere.
8. Riepilogo e concetti chiave
📚 Fine Modulo
Hai gli strumenti (Python, Colab, stack, dataset). Ora serve la teoria che li fa funzionare.