Panoramica degli Strumenti AI: Python, Colab e Stack | Prof. Giagnotti
Intelligenza Artificiale • Livello 1 • Modulo 1 • Lezione 4
A cura di Prof. Giagnotti • Academy 2026

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.

📦 Stack AI Python ⚡ Google Colab ⏱️ 60 min
// obiettivi di apprendimento
✓Spiegare perché Python è diventato il linguaggio standard per l'AI/ML e confrontarlo con le alternative (R, Julia, C++)
✓Usare Google Colab per creare un notebook, eseguire celle di codice e markdown, montare Google Drive e abilitare il runtime GPU
✓Orientarsi nello stack Python per l'AI: sapere a cosa servono NumPy, Pandas, Matplotlib, Scikit-learn, TensorFlow/Keras, PyTorch e HuggingFace
✓Trovare e caricare dataset pubblici da Kaggle, UCI ML Repository e HuggingFace Datasets per iniziare a sperimentare

1. Perché Python per l'AI? Il mito della velocità

📌 Definizione da ricordare

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.

01 · ECOSISTEMA

Librerie ovunque

NumPy, SciPy, Pandas, Scikit-learn, PyTorch, TensorFlow sono nate in Python. Una nuova libreria entra automaticamente in un mondo coerente e interoperabile.

02 · NOTEBOOK

Il flusso esplorativo

Jupyter (2014) ha unito codice, output, grafici e testo nello stesso documento.

03 · PERFORMANCE

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.

💬 Tip del docente - Io lo farei così

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

LinguaggioPunti di forza AIQuando preferirloQuando evitarlo
PythonEcosistema completo, notebook, community enorme, prototipazione rapidaQuasi sempre — ricerca, prototipi, produzione MLSistemi embedded con memoria/latenza critica
RStatistica classica, ggplot2, bioinformaticaAnalisi statistica pura, paper medicinaDeep learning, web app, produzione
JuliaVelocità nativa, calcolo scientifico HPCSimulazioni numeriche intensiveEcosistema AI ancora immaturo
C++ / CUDAMassima performance, controllo hardware low-levelInferenza ottimizzata, kernel custom GPUPrototipazione e ricerca flessibile
⚠️ Errore comune

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.

🎯 Esempio in classe

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.

📌 Colab in una frase

Google Colab = Jupyter Notebook nel browser + GPU NVIDIA T4 gratuita + zero installazioni. Accessibile da colab.research.google.com con account Google.

FunzioneCome si faNota del prof
Nuovo notebookcolab.research.google.com → File → New notebookSalvato auto su Drive
Runtime GPURuntime → Change runtime type → T4 GPUGratis con limite ore/giorno
Mount Drivefrom 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_pacchettoIl ! lancia shell, ma dura solo la sessione
Carica filefrom google.colab import files; files.upload()O drag&drop nel pannello sinistra
Esegui cellaShift+EnterEsegue e passa alla successiva
Nuova cellaCtrl+M poi B (below)A=above, B=below — lo chiedo sempre in verifica
💬 Io ho pensato di fare così in lab

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.

⚠️ Errore da evitare

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).

LIVELLO 5
APPLICAZIONI SPECIFICHE
HuggingFace TransformersLangChainOpenCVNLTK / spaCy
LIVELLO 4
DEEP LEARNING
TensorFlow 2 / KerasPyTorchJAX
LIVELLO 3
ML CLASSICO
Scikit-learnXGBoostLightGBMStatsmodels
LIVELLO 2
DATI E VISUALIZZAZIONE
PandasMatplotlibSeabornPlotly
LIVELLO 1
FONDAMENTA NUMERICHE
NumPySciPy
LibreriaA cosa serve davveroQuando la usi
NumPyArray N-dimensionali veloci, operazioni vettorialiBase di tutto. Senza NumPy non funziona nulla
PandasDataFrame, pulizia dati, merge, groupbyQuando i dati sono tabelle (CSV, Excel)
Matplotlib / SeabornGrafici, istogrammi, heatmapEsplori i dati prima di modellarli
Scikit-learnClassificazione, regressione, clustering, pipeline90% dei task di ML classico - API fit/predict
TensorFlow / PyTorchReti neurali profonde, GPU, autogradSolo quando serve deep learning (immagini, testo complesso)
HuggingFaceModelli pre-addestrati (BERT, GPT, ViT, Whisper)NLP, CV, audio con transfer learning
💬 Tip del docente - Io lo farei così

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.

PYTHON · HELLO WORLD ML - IRIS
# Importa le librerie necessarie import numpy as np import pandas as pd from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier from sklearn.metrics import accuracy_score # 1. Carica il dataset (150 esempi, 4 feature, 3 classi) iris = load_iris() X, y = iris.data, iris.target # 2. Split train/test (80% train, 20% test) X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.2, random_state=42 ) # 3. Addestra il modello model = DecisionTreeClassifier(max_depth=3) model.fit(X_train, y_train) # ← qui avviene l'apprendimento # 4. Valuta sul test set (dati mai visti) y_pred = model.predict(X_test) accuracy = accuracy_score(y_test, y_pred) print(f"Accuratezza: {accuracy:.2%}") # → ~96.67%
🔍 Cosa sta succedendo in queste 20 righe?

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 ho pensato di fare così per l'esercizio

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.

01 · KAGGLE

Il più realistico

Migliaia di dataset, competizioni con premi, notebook pubblici. API per scaricare in Colab: !kaggle datasets download -d user/dataset

02 · UCI ML

Il più accademico

650+ dataset storici (Iris, Wine, Breast Cancer) dal 1987. Citabili, ben documentati. Perfetto per sperimentare algoritmi.

03 · HUGGING FACE

Il più NLP/CV

50k+ dataset per testo, immagini, audio. Una riga: from datasets import load_dataset; ds = load_dataset("imdb")

PiattaformaCosa troviComando utile in Colab
KaggleDataset sporchi realistici, competizioni!kaggle datasets download -d username/dataset-name --unzip
UCI ML RepoDataset classici accademicipd.read_csv(url) diretto dal sito UCI
HuggingFace DatasetsNLP, CV, audio moderniload_dataset("imdb") / load_dataset("mnist")
Google Dataset SearchMotore di ricerca aggregatoTrovi dataset per "air quality Italy" ecc.
⚠️ Errore comune sul dataset

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.

Hai già dati strutturati (tabelle CSV/Excel)?
✓ SÌ → Problema di classificazione o regressione tabellare?
✓ → Scikit-learn (LogReg, RandomForest, SVM)
✓ Dataset >100k righe, accuracy critica → XGBoost / LightGBM
✗ NO → Che tipo di dato hai?
Immagini / video → PyTorch + torchvision oppure TensorFlow/Keras
Testo → HuggingFace Transformers (BERT, GPT ecc.)
Audio → HuggingFace + Whisper oppure librosa
Ambiente / gioco → Gymnasium + Stable-Baselines3
Io lo farei così → Regola d'oro: inizia sempre con Scikit-learn. Aggiungi complessità solo quando serve davvero.
💬 Io ho pensato di fare così per farvi ragionare

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:

  1. Monta Drive con drive.mount e crea cartella AI-L1-M1
  2. Installa se serve: controlla versioni di numpy, pandas, sklearn con import sklearn; sklearn.__version__
  3. Carica Iris con load_iris(), converti in DataFrame Pandas e mostra head + info + describe
  4. Fai train_test_split (test_size=0.2, random_state=42), addestra DecisionTree max_depth=3, calcola accuracy
  5. Aggiungi 2 grafici con matplotlib: istogramma di una feature e scatter plot sepal_length vs sepal_width colorato per target
  6. Scarica un dataset da Kaggle (es. Titanic) con API Kaggle e mostra prime 5 righe — salva tutto su Drive
✅ Soluzione ragionata - come correggo io

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.

✓Python domina l'AI non perché è veloce, ma perché le librerie C/C++ ottimizzate si usano tramite wrapper Python semplici e l'ecosistema si auto-rinforza.
✓Google Colab è un punto di partenza pratico per sperimentare con Python e ML senza configurare localmente l'ambiente.: Jupyter nel browser, GPU T4 gratuita, zero install. Salva sempre su Drive — /content/ è temporaneo, max ~12h.
✓Lo stack AI si costruisce a livelli: NumPy → Pandas/Matplotlib → Scikit-learn → TensorFlow/PyTorch → HuggingFace. Impara ogni livello prima di passare al successivo.
✓Scikit-learn copre il 90% dei task di ML classico con API coerente: fit(), predict(), transform(). È il punto di partenza per chiunque.
✓Dataset pubblici: Kaggle per realistici e competition, UCI per classici accademici, HuggingFace per NLP/CV, Google Dataset Search per ricerca tematica.
✓Questo chiude il Modulo 1 di AI Livello 1. Prossimo modulo: matematica per AI — algebra lineare, calcolo, probabilità e statistica. Io ho pensato di chiudere così perché ora avete gli attrezzi, poi costruiamo le fondamenta teoriche.

📚 Fine Modulo

Hai gli strumenti (Python, Colab, stack, dataset). Ora serve la teoria che li fa funzionare.