小批量梯度下降算法代码
时间: 2023-11-12 18:14:38 浏览: 94
梯度下降算法+代码详解
以下是使用Python实现的小批量梯度下降算法的代码:
```python
import numpy as np
def minibatch_gradient_descent(X, y, theta, alpha, n_epochs, batch_size):
m = len(y)
n_batches = int(np.ceil(m / batch_size))
for epoch in range(n_epochs):
shuffled_indices = np.random.permutation(m)
X_shuffled = X[shuffled_indices]
y_shuffled = y[shuffled_indices]
for i in range(0, m, batch_size):
X_i = X_shuffled[i:i+batch_size]
y_i = y_shuffled[i:i+batch_size]
gradients = 2/batch_size * X_i.T.dot(X_i.dot(theta) - y_i)
theta = theta - alpha * gradients
return theta
```
其中,X是输入特征矩阵,y是目标变量向量,theta是模型参数向量,alpha是学习率,n_epochs是迭代次数,batch_size是每个小批量的样本数量。函数返回更新后的theta向量。在每个迭代周期中,函数首先对数据进行随机重排,然后将数据分成多个小批量。在每个小批量中,函数计算梯度并更新theta向量。最终返回更新后的theta向量。
阅读全文