Perché Python per l’AI?
Potremmo fare AI in quasi qualunque linguaggio. Allora perché il 90%+ dei paper, dei corsi, dei job posting e delle librerie AI usano Python? Non è perché Python sia il più veloce — anzi, è lento rispetto a C++ o Julia. Il motivo è una combinazione di fattori storici, pratici e di ecosistema che si sono auto-rinforzati nel tempo.
NumPy, SciPy, Pandas, Matplotlib, Scikit-learn, TensorFlow, PyTorch — tutte le librerie di riferimento sono scritte in Python. Aggiungerne una nuova significa entrare automaticamente in un ecosistema coerente e interoperabile.
Jupyter Notebook (2014) ha rivoluzionato la ricerca: codice, output, grafici e testo formattato nello stesso documento. Questo flusso di lavoro esplorativo è diventato lo standard in data science e ML. Non esiste equivalente altrettanto maturo in altri linguaggi.
Python è lento come interprete, ma le librerie critiche (NumPy, TensorFlow, PyTorch) sono scritte in C/C++/CUDA. Python fa da “colla” leggera tra operazioni ottimizzate. La lentezza non tocca i calcoli numerici pesanti.
Python vs alternative: quando usare cosa
| Linguaggio | Punti di forza nell’AI | Quando preferirlo | Quando evitarlo |
|---|---|---|---|
| Python | Ecosistema AI completo, notebook, community enorme, prototipazione rapida | Quasi sempre — ricerca, prototipazione, produzione ML | Sistemi embedded con vincoli di memoria e latenza critici |
| R | Statistica classica, visualizzazione (ggplot2), bioinformatica | Analisi statistica pura, pubblicazioni scientifiche in medicina | Deep learning, sistemi in produzione, applicazioni web |
| Julia | Velocità nativa, calcolo scientifico ad alte prestazioni | Simulazioni numeriche intensive, ricerca scientifica computazionale | Ecosistema AI/ML ancora immaturo rispetto a Python |
| C++ / CUDA | Massima performance, controllo hardware, GPU low-level | Inferenza in produzione ottimizzata, kernel custom per GPU | Prototipazione, ricerca, tutto ciò che richiede flessibilità |
Jupyter Notebook e Google Colab
Il Jupyter Notebook (Project Jupyter, ex IPython Notebook) è il formato standard per la data science interattiva. Un notebook è un documento JSON (.ipynb) che contiene una sequenza di celle: ogni cella può essere codice Python eseguibile o testo formattato in Markdown. Gli output — testo, tabelle, grafici — sono salvati inline nel file.
Google Colab — Jupyter nel browser, GPU gratis
Google Colaboratory (Colab) è un servizio Google che ospita Jupyter Notebook nel cloud, accessibile da browser senza installare nulla. Il vantaggio chiave: accesso gratuito a GPU NVIDIA (T4, A100 a pagamento) e TPU per accelerare il training — hardware che su un PC consumer costerebbe migliaia di euro.
| Funzione | Come si fa | Note |
|---|---|---|
| Nuovo notebook | colab.research.google.com → File → New notebook | Salvato automaticamente su Google Drive |
| Runtime GPU | Runtime → Change runtime type → T4 GPU | Gratuito con limiti di ore/giorno; Colab Pro per più ore |
| Mount Google Drive | from google.colab import drive; drive.mount('/content/drive') | Accedi ai file di Drive come se fossero locali |
| Installare pacchetti | !pip install nome_pacchetto | Il ! esegue comandi shell; la sessione è temporanea |
| Caricare file locali | from google.colab import files; files.upload() | Oppure trascina il file nel pannello di sinistra |
| Eseguire cella | Shift+Enter | Esegue e sposta al cursore alla cella successiva |
| Nuova cella codice | Ctrl+M poi B (below) | A per above, B per below |
In Colab, la sessione del runtime dura al massimo ~12 ore e le variabili vengono azzerate dopo l’inattività. I file salvati su /content/ vengono persi al termine della sessione: salva sempre su Google Drive o scarica i file importanti. Il codice del notebook resta salvato su Drive.
Lo stack Python per l’AI — la mappa completa
Lo stack AI Python è suddiviso in livelli: dalle operazioni numeriche di base, passando per la manipolazione dati, fino alle librerie specializzate per ML e DL. Capire quale livello fa cosa evita di usare uno strumento al posto sbagliato.
Schede rapide delle librerie principali
Array N-dimensionali ad alte performance. Sostituisce i loop Python con operazioni vettoriali ottimizzate in C. È la fondamenta di quasi tutto lo stack AI: Pandas, Scikit-learn e i tensor di PyTorch/TF sono tutti costruiti sopra array NumPy o concetti compatibili.
DataFrame tabellari (come Excel, ma programmabile). Carica CSV, JSON, Excel, SQL. Permette filtraggio, aggregazione (groupby), join tra tabelle, gestione valori mancanti. Il punto di partenza per qualunque analisi dati.
Matplotlib è la libreria di visualizzazione di base: controllo totale ma verbosa. Seaborn è un layer ad alto livello su Matplotlib: grafici statistici belli con poche righe di codice. Scatterplot, boxplot, heatmap correlazione — tutto pronto in 2-3 righe.
Il toolkit standard per il ML classico. Implementa decine di algoritmi (regressione, classificazione, clustering, riduzione dimensionalità) con un’API coerente: fit(), predict(), transform(). Include anche Pipeline, cross-validation e GridSearchCV.
Framework DL di Google. Keras (ora integrato in TF2) offre un’API ad alto livello per costruire reti neurali con poche righe. Ottimo per deployment in produzione (TensorFlow Serving, TensorFlow Lite per mobile). Molto usato in ambito enterprise.
Framework DL di Meta. Dynamic computation graph — il grafo si costruisce durante l’esecuzione, rendendo il debug più intuitivo. Preferito nella ricerca accademica. È la base di HuggingFace Transformers. In forte crescita rispetto a TensorFlow.
Inizia con NumPy + Pandas + Matplotlib + Scikit-learn. Questi coprono il 90% dei problemi di ML classico. Aggiungi TensorFlow o PyTorch solo quando ti avvicini alle reti neurali. HuggingFace Transformers arriva solo quando vuoi usare modelli pre-addestrati. Lo stack si costruisce progressivamente — ogni livello dipende dai precedenti.
Primo notebook: il tuo “hello world” dell’AI
Un classico primo esperimento è addestrare un classificatore sul dataset Iris, che contiene 150 misurazioni di petali e sepali di 3 specie di iris. Con Scikit-learn, l’intera pipeline richiede meno di 20 righe.
# 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%
Riga 13 — train_test_split: separa i dati in un set di addestramento e uno di test. Il modello non vedrà mai i dati di test durante il training — servono solo per misurare le performance reali. Il random_state=42 garantisce riproducibilità (stesso split ogni volta). Riga 17 — model.fit(): è qui che avviene il Machine Learning: il Decision Tree analizza X_train e y_train, costruisce l’albero di decisione che minimizza l’impurità. Riga 20 — model.predict(): applica il modello addestrato a dati nuovi.
Dataset pubblici: dove trovare i dati
Un modello ML è buono quanto i dati su cui viene addestrato. La buona notizia: esistono migliaia di dataset pubblici, gratuiti e già puliti, perfetti per imparare e sperimentare.
La piattaforma più popolare per data science. Contiene migliaia di dataset scaricabili, competizioni con premi in denaro e notebook pubblici (soluzioni degli altri da studiare). Registrazione gratuita. Usa la Kaggle API per scaricare dataset direttamente in Colab: !kaggle datasets download -d username/dataset-name. Ottimo per dataset “sporchi” realistici.
Il repository storico dell’University of California Irvine: oltre 650 dataset usati in pubblicazioni scientifiche dal 1987. Dati “classici” come Iris, Wine, Breast Cancer, Adult Income. Citabili nelle ricerche, con descrizione dettagliata delle feature. Ideale per sperimentare algoritmi.
Oltre 50.000 dataset per NLP, CV e audio. Caricamento in una riga: from datasets import load_dataset; ds = load_dataset("imdb"). Integrazione nativa con PyTorch e TensorFlow. Perfetto per NLP — contiene IMDB, Wikipedia, CommonCrawl e molti altri corpora testuali.
Motore di ricerca Google dedicato ai dataset. Aggrega dataset da migliaia di repository (governo, accademia, aziende). Utile quando cerchi dati su un dominio specifico (es. “air quality Italy”) senza sapere dove trovarli.
Decision tree: quale libreria usare?
✓ Dataset >100k righe, accuracy critica → XGBoost / LightGBM
Testo → HuggingFace Transformers (modelli pre-addestrati)
Audio → HuggingFace + Whisper oppure librosa
Ambiente / gioco → Gymnasium + Stable-Baselines3
- Python domina l’AI non perché sia veloce, ma perché le librerie C/C++ ottimizzate si usano tramite wrapper Python semplici, e l’ecosistema si è auto-rinforzato nel tempo.
- Google Colab è il punto di partenza ideale: Jupyter nel browser, GPU gratuita, nessuna installazione. Salva sempre i file su Drive — le sessioni sono temporanee.
- 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 un’API coerente:
fit(),predict(),transform(). È il punto di partenza per chiunque. - Dataset pubblici: Kaggle per dataset realistici e competizioni, UCI per dataset accademici classici, HuggingFace Datasets per NLP e CV, Google Dataset Search per ricerche tematiche.
- Questo completa il Modulo 1 di AI Livello 1. Il prossimo modulo affronta la matematica necessaria: algebra lineare, calcolo, probabilità e statistica — le fondamenta teoriche su cui tutto il resto si costruisce.