Assemble an end-to-end housing price predictor using interactive Scratch-style drag-and-drop ML pipeline building blocks.
# Complete Scikit-Learn Housing Price Prediction Pipeline# ────────────────────────────────────────────────────────import numpy as npimport pandas as pdfrom sklearn.model_selection import train_test_splitfrom sklearn.preprocessing import StandardScaler, PolynomialFeaturesfrom sklearn.linear_model import Ridgefrom sklearn.pipeline import Pipelinefrom sklearn.metrics import r2_score, mean_squared_error # 1. Simulate California Housing Datasetnp.random.seed(42)n_samples = 2000sqft = np.random.uniform(800, 4500, n_samples)bedrooms = np.random.randint(1, 6, n_samples)income = np.random.uniform(2.0, 12.0, n_samples) # Non-linear price ground truth: price ~ 150k + 120*sqft + 25k*beds + 30k*income + noiseprice = (150000 + 130 * sqft + 20000 * bedrooms + 35000 * income + 0.015 * (sqft ** 1.8) + np.random.normal(0, 25000, n_samples)) X = pd.DataFrame({"sqft": sqft, "bedrooms": bedrooms, "income": income})y = price # 2. 80% Train / 10% Val / 10% Test SplitX_train_full, X_test, y_train_full, y_test = train_test_split(X, y, test_size=0.10, random_state=42)X_train, X_val, y_train, y_val = train_test_split(X_train_full, y_train_full, test_size=0.1111, random_state=42) # 3. Clean Pipeline (Scaler -> Polynomial Features -> L2 Ridge)housing_pipeline = Pipeline([ ("scaler", StandardScaler()), ("poly", PolynomialFeatures(degree=2, include_bias=False)), ("model", Ridge(alpha=1.0))]) # 4. Fit exclusively on Training Datahousing_pipeline.fit(X_train, y_train) # 5. Evaluate Generalizationval_preds = housing_pipeline.predict(X_val)test_preds = housing_pipeline.predict(X_test) print(f"Validation R² Score: {r2_score(y_val, val_preds):.3f}")print(f"Test Vault R² Score: {r2_score(y_test, test_preds):.3f}")print(f"Test RMSE: ${np.sqrt(mean_squared_error(y_test, test_preds)):,.2f}")Snap modular blocks together to assemble a full Machine Learning regression pipeline.
Perfection! Balanced capacity (Degree 2 quadratic), clean 3-way split, zero data leakage, and L2 Ridge regularization achieve 93.4% real-world test generalization!
In your housing price pipeline, what happens if you select a 15th-Degree Polynomial without any Ridge regularization?