boston房价的Lasso,岭回归及λ的取值,反复调整得到最优结果,并做出相应图像的python代码,其中boston 房价数据来源为"D:\\qq\\2752296054\\filerecv\\python\\boston.csv"
时间: 2024-04-19 21:22:59 浏览: 25
Lasso回归和岭回归是常用的线性回归的正则化方法,用于解决特征过多或者特征之间存在共线性的问题。在这两种方法中,通过引入正则化项来控制模型的复杂度,从而避免过拟合。
Lasso回归通过最小化目标函数来求解模型参数,目标函数由两部分组成:平方误差项和L1正则化项。L1正则化项是模型参数的绝对值之和与一个正则化参数λ的乘积。Lasso回归可以将某些特征的系数压缩为0,从而实现特征选择的功能。
岭回归也是通过最小化目标函数来求解模型参数,目标函数由平方误差项和L2正则化项组成。L2正则化项是模型参数的平方和与一个正则化参数λ的乘积。与Lasso回归不同,岭回归不会将特征的系数压缩为0,而是将其尽量缩小。
下面是使用Python进行Lasso回归和岭回归,并调整λ值得到最优结果,并绘制相应图像的代码:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import Lasso, Ridge
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
# 读取数据
data = pd.read_csv("D:\\qq\\2752296054\\filerecv\\python\\boston.csv")
# 划分特征和标签
X = data.drop("MEDV", axis=1)
y = data["MEDV"]
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 定义不同的λ值
lambda_values = [0.001, 0.01, 0.1, 1, 10, 100]
# 初始化模型和结果列表
lasso_results = []
ridge_results = []
# 遍历λ值
for lambda_val in lambda_values:
# Lasso回归
lasso = Lasso(alpha=lambda_val)
lasso.fit(X_train, y_train)
lasso_pred = lasso.predict(X_test)
lasso_mse = mean_squared_error(y_test, lasso_pred)
lasso_results.append(lasso_mse)
# 岭回归
ridge = Ridge(alpha=lambda_val)
ridge.fit(X_train, y_train)
ridge_pred = ridge.predict(X_test)
ridge_mse = mean_squared_error(y_test, ridge_pred)
ridge_results.append(ridge_mse)
# 绘制结果图像
plt.plot(lambda_values, lasso_results, label="Lasso")
plt.plot(lambda_values, ridge_results, label="Ridge")
plt.xlabel("Lambda")
plt.ylabel("MSE")
plt.legend()
plt.show()
```
以上代码中,我们首先读取了boston房价数据,然后划分了特征和标签。接着使用train_test_split函数将数据划分为训练集和测试集。然后,我们定义了不同的λ值,并使用Lasso和Ridge模型进行回归训练,并计算了预测结果的均方误差(MSE)。最后,我们绘制了λ值与MSE之间的关系图像,以便选择最优的λ值。