python实现小批量梯度上升算法
时间: 2023-09-24 09:05:34 浏览: 208
小批量梯度上升是一种常用的优化算法,下面是 Python 实现小批量梯度上升算法的代码:
```python
import numpy as np
def sigmoid(z):
return 1 / (1 + np.exp(-z))
def batch_gradient_ascent(X, y, alpha=0.001, epochs=500, batch_size=20):
m, n = X.shape
weights = np.ones((n, 1))
for epoch in range(epochs):
for i in range(0, m, batch_size):
X_batch = X[i:i+batch_size]
y_batch = y[i:i+batch_size]
z = np.dot(X_batch, weights)
h = sigmoid(z)
error = y_batch - h
gradient = np.dot(X_batch.T, error) / batch_size
weights = weights + alpha * gradient
return weights
```
其中,`X` 表示特征矩阵,`y` 表示标签矩阵,`alpha` 表示学习率,`epochs` 表示迭代次数,`batch_size` 表示每次迭代的样本数。在每次迭代中,将样本分成若干批,计算每一批样本的梯度并更新权重。最后返回权重矩阵。
阅读全文