Passa al contenuto principale

Ames Housing — Pipeline ML End-to-End

Pipeline didattica e production-friendly che, a partire dal dataset originale di De Cock (2011), costruisce un sistema completo di stima del prezzo di vendita: data wrangling → feature engineering → preprocessing → tre modelli candidati (Ridge, Random Forest, XGBoost) → tuning K-fold → valutazione su holdout → inferenza tramite predict_price().

:::tip In una riga Da CSV grezzo a predict_price() con pochi comandi e zero leakage. :::

Repository GitHub

ItemLink
Repofedcal/ames-housing-price-pipeline
Documentazionehttps://fedcal.github.io/ames-housing-price-pipeline/
LicenzaMIT
Stack docsDocusaurus 3 + TypeScript + KaTeX

Risultati di riferimento (full tuning)

ModelloRMSE ($)MAE ($)RMSE-logMAPE
XGBoost$18,350$11,9390.94710.10557.19%
Ridge$18,509$12,4700.94610.10757.59%
RandomForest$20,825$13,2650.93180.11447.90%

XGBoost vince sul holdout per ~1%; in cross-validation Ridge è marginalmente migliore. La differenza è nel rumore: su Ames il preprocessing accurato pesa più della scelta del modello.

Quick start

git clone https://github.com/fedcal/ames-housing-price-pipeline.git
cd ames-housing-price-pipeline
python3 -m venv venv && source venv/bin/activate
pip install -e ".[notebooks]"

ames-train # full tuning ~5-10 min
ames-train --quick # smoke test ~30s

Inferenza programmatica:

from ames_pipeline.inference import predict_price

casa = {
"OverallQual": 7,
"GrLivArea": 1800,
"Neighborhood": "CollgCr",
"YearBuilt": 2005,
"TotalBsmtSF": 900,
"GarageArea": 480,
}
print(f"${predict_price(casa):,.0f}")
# ~$248,000

Mappa della documentazione

Teoria

Cinque articoli che costruiscono progressivamente i concetti necessari a leggere il progetto:

  1. Regressione & target log — perché OLS, perché log-trasformare il prezzo.
  2. Regolarizzazione — Ridge, Lasso, ElasticNet.
  3. Random Forest & Boosting — perché i tree-based dominano su tabular.
  4. Metriche di regressione — RMSE, MAE, MAPE, R².
  5. Pipeline & data leakagePipeline sklearn, prevenzione leakage.

Scelte tecniche

Decisioni architetturali e razionali documentati:

Stack tecnologico

LayerTecnologie
LinguaggioPython 3.12
MLscikit-learn, xgboost
Datapandas, numpy
Plottingmatplotlib, seaborn
Notebookjupyter, jupytext
Persistenzajoblib
DocumentazioneDocusaurus 3 + TypeScript + KaTeX
CI/CDGitHub Actions + GitHub Pages

Autore

Progetto realizzato da Federico Calò come parte del percorso Machine Learning Engineer di DataMasters/Skiller.

Per altri progetti, articoli e contatti: federicocalo.dev.