Housing Price Forecasting via Multi-Model Regression and Neural Networks
Data Acquisitoin and Normalization Pipeline
import numpy as np
import pandas as pd
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import r2_score
from sklearn.linear_model import LinearRegression, SGDRegressor, RidgeCV
from sklearn.neural_network import MLPRegressor
# Load the target dataset
market_dataset = load_boston()
input_features = market_dataset.data
output_labels = market_dataset.target
# Randomly partition samples into training and validation subsets
X_train, X_validate, y_train, y_validate = train_test_split(
input_features, output_labels, test_size=0.2, random_state=42
)
# Ensure target vectors maintain 2D shape for estimator compatibility
y_train = y_train.reshape(-1, 1)
y_validate = y_validate.reshape(-1, 1)
# Apply Z-score standardization to inputs and outputs independently
feature_scaler = StandardScaler()
X_train_norm = feature_scaler.fit_transform(X_train)
X_validate_norm = feature_scaler.transform(X_validate)
target_scaler = StandardScaler()
y_train_norm = target_scaler.fit_transform(y_train)
y_validate_norm = target_scaler.transform(y_validate)
Evaluating Classical Regression Techniques
# Ordinary Least Squares (Closed-Form Solution)
ols_estimator = LinearRegression()
ols_estimator.fit(X_train_norm, y_train_norm)
print("OLS Coefficient R²:", r2_score(y_validate, ols_estimator.predict(X_validate_norm)))
# Ridge Regression with Automated Alpha Tuning
ridge_estimator = RidgeCV(alphas=np.logspace(-3, 2, num=100))
ridge_estimator.fit(X_train_norm, y_train_norm)
print("Ridge Regularization R²:", r2_score(y_validate, ridge_estimator.predict(X_validate_norm)))
# Stochastic Gradient Descent Optimizer
sgd_estimator = SGDRegressor()
sgd_estimator.fit(X_train_norm, y_train_norm)
print("Gradient Descent R²:", r2_score(y_validate, sgd_estimator.predict(X_validate_norm)))
Deep Architecture Construction and Training
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
# Initialize a multilayer perceptron for regression
nn_pipeline = Sequential([
Dense(units=64, activation='relu', input_shape=(input_features.shape[1],)),
Dense(units=64, activation='relu'),
Dense(units=1, activation='linear') # Linear activation is standard for continuous output prediction
])
# Configure optimization and loss functions
nn_pipeline.compile(
optimizer='rmsprop',
loss='mse',
metrics=['mae']
)
# Execute supervised training cycle
training_log = nn_pipeline.fit(
X_train_norm, y_train_norm,
epochs=300,
batch_size=16,
shuffle=False,
verbose=0
)
# Compute validation metrics and coefficient of determination
eval_results = nn_pipeline.evaluate(X_validate_norm, y_validate_norm, batch_size=16, verbose=0)
print("Validation MSE & MAE:", eval_results)
forecasted_values = nn_pipeline.predict(X_validate_norm)
print("Network Architecture R²:", r2_score(y_validate, forecasted_values))
Import Path Adjustments for Modern Environments
TensorFlow has merged the standalone Keras package direct into its core distribusion. Older scripts relying on isolated Keras namespaces will raise module resolution failures. Update your header dependencies to reflect the unified import path:
# Obsolete syntax (triggers ImportError in TF 2.x+)
# from keras.models import Sequential
# from keras.layers import Dense
# Compatible syntax for current TensorFlow releases
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense