在波士顿房价预测问题中,请你使用线性回归模型预测房价,并使用梯度下降算法来优化线性回归模型的参数
时间: 2024-04-08 07:35:45 浏览: 97
好的,以下是使用梯度下降算法来优化线性回归模型参数的示例代码:
```python
# 导入所需的库
import numpy as np
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
# 加载波士顿房价数据集
boston = load_boston()
# 划分特征和标签
X = boston.data
y = boston.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 添加偏置项
X_train = np.c_[np.ones(X_train.shape[0]), X_train]
X_test = np.c_[np.ones(X_test.shape[0]), X_test]
# 初始化参数
theta = np.zeros(X_train.shape[1])
# 定义梯度下降函数
def gradient_descent(X, y, theta, learning_rate, num_iterations):
m = len(y)
history = [] # 用于保存每次迭代的损失函数值
for iteration in range(num_iterations):
# 计算预测值和误差
y_pred = np.dot(X, theta)
error = y_pred - y
# 更新参数
gradient = (1/m) * np.dot(X.T, error)
theta = theta - learning_rate * gradient
# 计算损失函数值并保存
cost = mean_squared_error(y, y_pred)
history.append(cost)
return theta, history
# 设置超参数
learning_rate = 0.01
num_iterations = 1000
# 使用梯度下降优化参数
theta_optimized, history = gradient_descent(X_train, y_train, theta, learning_rate, num_iterations)
# 在测试集上进行预测
y_pred = np.dot(X_test, theta_optimized)
# 计算均方误差
mse = mean_squared_error(y_test, y_pred)
print("均方误差:", mse)
```
这段代码首先加载了波士顿房价数据集,并将特征和标签进行划分。然后,添加偏置项(常数项)到特征矩阵中,并初始化模型参数。接下来,定义了梯度下降函数,其中根据预测值和真实值计算误差,然后根据误差更新参数,并计算损失函数值。在主程序中,设置了学习率和迭代次数,并调用梯度下降函数来优化参数。最后,使用优化后的参数在测试集上进行预测,并计算均方误差作为评估指标。
阅读全文