python梯度下降法求解线性回归模型
时间: 2024-09-18 12:13:25 浏览: 31
Python中的梯度下降法是一种常用的优化算法,用于求解线性回归模型中的参数,使得损失函数最小化。对于线性回归,我们的目标通常是找到一个最佳拟合直线,使得数据点到这条直线的距离平方和最小。以下是基本步骤:
1. **初始化**:首先选择一个随机的权重向量`w`作为初始估计。
2. **计算损失函数**:线性回归的损失函数通常选择均方误差(MSE),即所有样本预测值与真实值之差的平方和除以样本数。
3. **计算梯度**:对每个训练样本,计算损失函数关于权重向量的偏导数,即梯度。对于线性回归,梯度等于预测值与实际值的偏差乘以样本对应的特征值。
4. **更新权重**:将当前权重向量减去学习率乘以梯度,这是一个小步调整,学习率决定了每次迭代调整的大小。
5. **重复迭代**:不断重复上述过程,直到达到预设的迭代次数、梯度足够小或者损失函数变化不大为止。
```python
import numpy as np
def gradient_descent(X, y, w_init, learning_rate, num_iterations):
m = X.shape[0] # 样本数
w = w_init.copy()
for _ in range(num_iterations):
y_pred = np.dot(X, w) # 预测值
dw = (1/m) * np.dot(X.T, (y_pred - y)) # 梯度
w -= learning_rate * dw # 更新权重
return w
# 示例用法
X = ... # 特征矩阵
y = ... # 目标变量
w_init = np.zeros(X.shape[1]) # 初始化权重
learning_rate = 0.01
num_iterations = 1000
optimal_w = gradient_descent(X, y, w_init, learning_rate, num_iterations)
```
阅读全文