Instructions to use gusdelact/usa-housing-linear-regression with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Scikit-learn
How to use gusdelact/usa-housing-linear-regression with Scikit-learn:
from huggingface_hub import hf_hub_download import joblib model = joblib.load( hf_hub_download("gusdelact/usa-housing-linear-regression", "sklearn_model.joblib") ) # only load pickle files from sources you trust # read more about it here https://skops.readthedocs.io/en/stable/persistence.html - Notebooks
- Google Colab
- Kaggle
usa-housing-lr
Modelo de regresión lineal (OLS) entrenado sobre el dataset
gusdelact/USA_Housing
para predecir el precio medio de una vivienda.
Información del modelo
- Estimador:
LinearRegression - Framework: scikit-learn
- Autor: gusdelact
- Fecha de entrenamiento: 2026-05-17T22:39:54.567662
- Random state: 42
- Serialización: joblib
Datos
- Fuente:
gusdelact/USA_Housing - Dataset curado:
gusdelact/usa-housing-curated - Train: 3750 filas, 5 features
- Target:
Price(log1p:False)
"Balanceo" para regresión
SMOTE/oversampling no aplica. Se usó split estratificado por bins del
target (n_bins=10) para garantizar que
train y test cubran todos los rangos de precio.
Métricas en test
| Métrica | Valor |
|---|---|
| rmse | 102511.2872 |
| mae | 82246.1838 |
| r2 | 0.9146 |
| mape | 0.0742 |
Benchmarking (justifica la elección de OLS)
| Modelo | RMSE test | R² test | CV-RMSE |
|---|---|---|---|
| linear_regression | 102511.29 | 0.9146 | 101315.61 |
| ridge | 102508.10 | 0.9147 | 101316.35 |
| lasso | 102511.19 | 0.9146 | 101315.15 |
| elastic_net | 102511.19 | 0.9146 | 101315.50 |
Las cuatro variantes (OLS, Ridge, Lasso, ElasticNet) dan resultados prácticamente idénticos sobre este dataset, lo que indica que la señal es lineal y no hay multicolinealidad fuerte. OLS es la elección por ser el más interpretable y no requerir hiperparámetros.
Cross-Validation (5-fold sobre train)
- RMSE: 101315.6121 ± 2092.6228
- R²: 0.9177 ± 0.0048
Fundamento Teórico
Las decisiones de modelado se respaldan con citas verificables a ESL e ISLP:
Por qué OLS sobre regularización
El benchmarking muestra que OLS, Ridge, Lasso y ElasticNet convergen al mismo RMSE en este dataset. ISLP §6.2 (Linear Model Selection and Regularization) muestra que cuando el rango de λ óptimo es pequeño y la caída de la curva de validación es poco pronunciada, "we might simply use the least squares solution" [ISLP §6.2]. Es exactamente nuestro caso: el shrinkage no aporta valor cuando todas las features contribuyen a la señal y no hay multicolinealidad fuerte.
Estandarización antes de regularización
ISLP §6.2 explicita que "it is good practice to standardize the columns
of X in these applications, if the variables are measured in different
units" [ISLP §6.2]. Por eso aplicamos StandardScaler en
feature_engineering.py aunque OLS sea el modelo final: garantiza que
el benchmarking contra Ridge/Lasso/ElasticNet sea justo y que los
coeficientes sean comparables entre features.
Cross-Validation con K=5
ISLP §5.1.4 (Bias-Variance Trade-Off for k-Fold Cross-Validation) argumenta que "one performs k-fold cross-validation using k = 5 or k = 10, as these values have been shown empirically to yield test error rate estimates that suffer neither from excessively high bias nor from very high variance" [ISLP §5.1.4]. K=5 es nuestro default razonable.
Limitaciones inherentes al modelo lineal
ISLP §3.3.2 advierte que el modelo lineal "makes several highly restrictive assumptions that are often violated in practice" — en particular linealidad y aditividad [ISLP §3.3.2]. El R²=0.91 sobre este dataset indica que esas asunciones se cumplen razonablemente, pero en otros datasets con relaciones no lineales o interacciones se debe considerar Random Forest o XGBoost.
Cómo usar
import joblib
import pandas as pd
from huggingface_hub import hf_hub_download
model_path = hf_hub_download("gusdelact/usa-housing-linear-regression", "model.joblib")
preproc_path = hf_hub_download("gusdelact/usa-housing-linear-regression", "preprocessor.joblib")
model = joblib.load(model_path)
preprocessor = joblib.load(preproc_path)
X = pd.DataFrame([{
"Avg. Area Income": 68583.0,
"Avg. Area House Age": 5.98,
"Avg. Area Number of Rooms": 6.99,
"Avg. Area Number of Bedrooms": 4.0,
"Area Population": 36163.0,
}])
X_proc = preprocessor.transform(X)
price_pred = model.predict(X_proc)[0]
print(f"Precio estimado: ${price_pred:,.2f}")
Limitaciones
- El dataset original es sintético/educativo (
gusdelact/USA_Housing), no representa el mercado inmobiliario real de USA. - El modelo asume relaciones lineales y aditivas entre las features y el precio [ISLP §3.3.2]. Para datos del mundo real con interacciones o no linealidades, considera modelos basados en árboles (Random Forest, XGBoost) y features adicionales (ubicación, condición, año exacto).
- Predicciones fuera del rango de entrenamiento (extrapolación) pueden dar valores físicamente inválidos (ej. precios negativos), porque OLS no tiene cota natural en su salida.
Referencias
- ISLP — An Introduction to Statistical Learning with Python, James, Witten, Hastie, Tibshirani (2nd Ed.).
- ESL — The Elements of Statistical Learning, Hastie, Tibshirani, Friedman (2nd Ed.).
- Downloads last month
- -