Questo progetto è focalizzato sull'analisi esplorativa dei dati (EDA) e sullo sviluppo di modelli di regressione per la predizione del valore delle abitazioni di Boston, utilizzando il classico Boston Housing Dataset. Il progetto include anche uno studio approfondito sul comportamento dei modelli polinomiali in contesti di interpolazione ed estrapolazione tramite cross-validazione.
Il repository contiene i seguenti file e cartelle principali:
- boston.csv: Il dataset principale contenente 506 record e 14 caratteristiche.
- Boston_house_predictions.ipynb: Notebook principale contenente:
- Presa di conoscenza del dataset (statistiche descrittive, verifica di valori nulli).
- Analisi delle correlazioni tra le caratteristiche e la variabile target.
- Addestramento di modelli di Regressione Lineare e Regressione Polinomiale (confronto tra vari gradi).
- Visualizzazione 2D e 3D delle predizioni e analisi dei residui.
- CH04_SEC05_1_CrossValidate.ipynb: Notebook focalizzato sul concetto di Cross-Validation, che illustra visivamente e matematicamente come l'errore di addestramento (interpolazione) e l'errore di test (estrapolazione) variano all'aumentare della complessità del modello (overfitting).
- Final_Report_Boston_Houses.pdf: Un report PDF completo e strutturato che riassume l'intero studio, le metodologie applicate e i risultati ottenuti.
- Grafici/: Cartella contenente tutti i grafici esportati in formato PNG e utilizzati per il report (matrice di correlazione, andamento dell'errore, proiezioni 3D delle predizioni, ecc.).
Il file boston.csv contiene le seguenti colonne informative relative alle zone residenziali di Boston:
| Caratteristica | Descrizione |
|---|---|
| CRIM | Tasso di criminalità pro capite per città. |
| ZN | Proporzione di terreno residenziale suddiviso in zone per lotti superiori a 25.000 piedi quadrati. |
| INDUS | Proporzione di acri industriali e commerciali (non al dettaglio) per città. |
| CHAS | Variabile dummy Charles River (= 1 se il tratto costeggia il fiume; 0 altrimenti). |
| NOX | Concentrazione di ossidi di azoto (parti per 10 milioni). |
| RM | Numero medio di stanze per abitazione. |
| AGE | Proporzione di unità abitative occupate da proprietari costruite prima del 1940. |
| DIS | Distanze ponderate da cinque centri occupazionali di Boston. |
| RAD | Indice di accessibilità alle autostrade radiali. |
| TAX | Aliquota dell'imposta sulla proprietà a valore pieno per $10.000. |
| PTRATIO | Rapporto alunni-insegnanti per città. |
| B | Calcolato come |
| LSTAT | Percentuale di popolazione di stato socio-economico più basso. |
| MEDV (Target) | Valore mediano delle case occupate dai proprietari (espresso in migliaia di dollari, $1000s). |
- Analisi Esplorativa dei Dati (EDA):
- Verifica dell'assenza di dati mancanti (
valoriNULL.png). - Visualizzazione della distribuzione delle variabili e correlazioni forti (
correlazioni.png). - Selezione delle variabili con la correlazione più alta rispetto a
MEDV(in particolareRMcorrelazione positiva forte, eLSTATcorrelazione negativa forte).
- Verifica dell'assenza di dati mancanti (
- Modellazione con Regressione:
- Regressione Lineare: Addestramento del modello per mappare la relazione lineare.
- Regressione Polinomiale: Addestramento di modelli di grado superiore (grado 2, ecc.) per catturare le relazioni non lineari (es. la curvatura dell'andamento di
LSTATrispetto aMEDV).
- Visualizzazione dei Risultati:
- Grafici 2D e 3D delle funzioni di decisione apprese dal modello rispetto alle feature chiave (
predizioniRM.png,predizioniLSTAT.png,predizioni3D.png). - Grafici dei residui e degli errori di addestramento.
- Grafici 2D e 3D delle funzioni di decisione apprese dal modello rispetto alle feature chiave (
- Cross-Validation & Overfitting:
- Studio della generalizzazione del modello.
- Analisi dell'errore di interpolazione (training error) rispetto all'errore di estrapolazione (test/validation error) all'aumentare dei gradi polinomiali, evidenziando il fenomeno dell'overfitting sui dati rumorosi.
Per eseguire i notebook Jupyter e riprodurre l'analisi, è necessario disporre di Python 3 e delle seguenti librerie:
pandasnumpymatplotlibseabornscikit-learn
È possibile installare le librerie necessarie tramite pip:
pip install pandas numpy matplotlib seaborn scikit-learn jupyterPer esplorare i notebook, avviare Jupyter Notebook nella directory del progetto:
jupyter notebook