(1)对波士顿房价进行线性回归训练; (2)用训练的权重矩阵进行预测(训练集和预测集的大小自行确定); (3)进行误差分析; (4)在线性回归中加入正则化,观察线性回归算法是否存在过拟合问题。
时间: 2023-12-31 09:03:45 浏览: 77
好的,以下是对波士顿房价进行线性回归训练、预测和误差分析,并加入正则化进行过拟合检验的Python代码:
```python
from sklearn.datasets import load_boston
from sklearn.linear_model import LinearRegression, Ridge, Lasso
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
import numpy as np
# 加载数据集
boston = load_boston()
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(boston.data, boston.target, test_size=0.2, random_state=42)
# 实例化线性回归模型
lr_model = LinearRegression()
# 对训练集进行拟合
lr_model.fit(X_train, y_train)
# 对训练集和测试集进行预测
y_train_pred = lr_model.predict(X_train)
y_test_pred = lr_model.predict(X_test)
# 计算均方误差
mse_train = mean_squared_error(y_train, y_train_pred)
mse_test = mean_squared_error(y_test, y_test_pred)
print("线性回归模型在训练集上的均方误差为:", mse_train)
print("线性回归模型在测试集上的均方误差为:", mse_test)
# 误差分析
print("线性回归模型在测试集上的前10个预测值为:", y_test_pred[:10])
print("测试集上的前10个真实值为:", y_test[:10])
# 加入L2正则化的线性回归模型(岭回归)
ridge_model = Ridge(alpha=0.1)
# 对训练集进行拟合
ridge_model.fit(X_train, y_train)
# 对训练集和测试集进行预测
y_train_pred = ridge_model.predict(X_train)
y_test_pred = ridge_model.predict(X_test)
# 计算均方误差
mse_train = mean_squared_error(y_train, y_train_pred)
mse_test = mean_squared_error(y_test, y_test_pred)
print("岭回归模型在训练集上的均方误差为:", mse_train)
print("岭回归模型在测试集上的均方误差为:", mse_test)
# 误差分析
print("岭回归模型在测试集上的前10个预测值为:", y_test_pred[:10])
print("测试集上的前10个真实值为:", y_test[:10])
# 加入L1正则化的线性回归模型(Lasso回归)
lasso_model = Lasso(alpha=0.1)
# 对训练集进行拟合
lasso_model.fit(X_train, y_train)
# 对训练集和测试集进行预测
y_train_pred = lasso_model.predict(X_train)
y_test_pred = lasso_model.predict(X_test)
# 计算均方误差
mse_train = mean_squared_error(y_train, y_train_pred)
mse_test = mean_squared_error(y_test, y_test_pred)
print("Lasso回归模型在训练集上的均方误差为:", mse_train)
print("Lasso回归模型在测试集上的均方误差为:", mse_test)
# 误差分析
print("Lasso回归模型在测试集上的前10个预测值为:", y_test_pred[:10])
print("测试集上的前10个真实值为:", y_test[:10])
```
注:以上代码中使用了L2正则化和L1正则化来防止过拟合。可以通过调整alpha参数的值来控制正则化的程度,alpha越大则正则化的程度越高。
阅读全文