Lasso Regression Aim: Roll Number: 160122733094 Date
Lasso Regression Aim: Roll Number: 160122733094 Date
LASSO REGRESSION
Aim: To implement and evaluate a Lasso regression model on the California Housing dataset.
To analyze model performance using MSE, RMSE, R², and MAE metrics.
To visualize feature correlations, predicted vs. actual values, and residuals using heatmaps and
scatter plots.
Code:
# Import necessary libraries
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.linear_model import Lasso
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import mean_squared_error, r2_score, mean_absolute_error
from math import sqrt
lasso = Lasso(alpha=0.1)
lasso.fit(X_train_scaled, y_train)
y_pred = lasso.predict(X_test_scaled)
mse = mean_squared_error(y_test, y_pred)
rmse = sqrt(mse)
r2 = r2_score(y_test, y_pred)
mae = mean_absolute_error(y_test, y_pred)
print(f"Mean Squared Error (MSE): {mse:.4f}")
print(f"Root Mean Squared Error (RMSE): {rmse:.4f}")
print(f"R-squared (R²): {r2:.4f}")
print(f"Mean Absolute Error (MAE): {mae:.4f}")
plt.figure(figsize=(8, 6))
plt.scatter(y_test, y_pred, alpha=0.6)
plt.plot([y.min(), y.max()], [y.min(), y.max()], color='red', linestyle='--')
plt.title('Predicted vs Actual Values')
plt.xlabel('Actual Values')
plt.ylabel('Predicted Values')
plt.show()
df_features = pd.DataFrame(X, columns=california_housing.feature_names)
correlation_matrix = df_features.corr()
plt.figure(figsize=(10, 8))
sns.heatmap(correlation_matrix, annot=True, fmt='.2f', cmap='coolwarm', linewidths=0.5)
plt.title("Feature Correlation Heatmap")
plt.show()
# Calculate residuals (difference between actual and predicted values)
residuals = y_test - y_pred
residuals_df = pd.DataFrame(residuals, columns=['Residuals'])
plt.figure(figsize=(8, 6))
sns.heatmap(residuals_df.T, annot=True, cmap='coolwarm', linewidths=0.5)
plt.title("Residual Heatmap")
plt.show()
Output:
RIDGE REGRESSION
Aim: To implement and evaluate a Ridge regression model on the California Housing dataset.
To analyze model performance using MSE, RMSE, R², and MAE metrics.
To visualize the predicted vs. actual values to assess the model’s accuracy.
Code:
# Import necessary libraries
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.linear_model import Ridge
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import mean_squared_error, r2_score, mean_absolute_error
from math import sqrt
california_housing = fetch_california_housing()
X = california_housing.data
y = california_housing.target
print("\nChecking for missing values in the features (X):")
print(pd.DataFrame(X).isnull().sum()) # No missing values expected
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)
ridge = Ridge(alpha=1.0)
ridge.fit(X_train, y_train)
y_pred = ridge.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
rmse = sqrt(mse)
r2 = r2_score(y_test, y_pred)
mae = mean_absolute_error(y_test, y_pred)
print(f"\nMean Squared Error (MSE): {mse:.4f}")
print(f"Root Mean Squared Error (RMSE): {rmse:.4f}")
print(f"R-squared (R²): {r2:.4f}")
print(f"Mean Absolute Error (MAE): {mae:.4f}")
plt.figure(figsize=(8, 6))
plt.scatter(y_test, y_pred, alpha=0.6)
plt.plot([y.min(), y.max()], [y.min(), y.max()], color='red', linestyle='--')
plt.title('Predicted vs Actual Values (Ridge Regression)')
plt.xlabel('Actual Values')
plt.ylabel('Predicted Values')
plt.show()
Output:
COMPARISON TABLE
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
precision = precision_score(y_test, y_pred, pos_label='+', zero_division=1)
recall = recall_score(y_test, y_pred, pos_label='+', zero_division=1)