小批量梯度下降法代码
时间: 2023-12-20 11:29:53 浏览: 84
以下是一个使用小批量梯度下降法的线性回归代码示例:
```python
import numpy as np
# 定义小批量梯度下降函数
def mini_batch_gradient_descent(X, y, theta, learning_rate=0.01, batch_size=20, num_iterations=1000):
m = len(y)
for i in range(num_iterations):
# 随机选择一批样本
batch_indices = np.random.randint(0, m, batch_size)
X_batch = X[batch_indices]
y_batch = y[batch_indices]
# 计算梯度
hypothesis = np.dot(X_batch, theta)
loss = hypothesis - y_batch
gradient = np.dot(X_batch.T, loss) / batch_size
# 更新参数
theta = theta - learning_rate * gradient
return theta
# 生成随机数据
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)
# 添加偏置项
X_b = np.c_[np.ones((100, 1)), X]
# 初始化参数
theta = np.random.randn(2, 1)
# 使用小批量梯度下降法训练模型
theta = mini_batch_gradient_descent(X_b, y, theta)
# 输出训练得到的参数
print(theta)
```
该代码使用了随机选择一批样本的方法来计算梯度,从而实现小批量梯度下降法。其中,`X`和`y`分别是输入特征和标签,`theta`是模型参数,`learning_rate`是学习率,`batch_size`是每批样本的数量,`num_iterations`是迭代次数。函数返回训练得到的参数`theta`。
阅读全文