小批量梯度上升算法,python
时间: 2023-10-24 22:14:33 浏览: 95
基于python与numpy的面向梯度直方图(HOG)特征描述与提取算法实现
小批量梯度上升算法是一种常用的优化算法,适用于大规模数据集。在Python中,可以使用NumPy库来实现小批量梯度上升算法。
以下是一个简单的示例代码:
```python
import numpy as np
# 定义sigmoid函数
def sigmoid(x):
return 1 / (1 + np.exp(-x))
# 定义小批量梯度上升算法
def batch_gradient_ascent(X, y, alpha=0.01, epochs=100, batch_size=32):
m, n = X.shape
weights = np.ones((n, 1)) # 初始化权重
for epoch in range(epochs):
for i in range(0, m, batch_size):
batch_X = X[i:i+batch_size]
batch_y = y[i:i+batch_size]
error = batch_y - sigmoid(batch_X.dot(weights))
weights += alpha * batch_X.T.dot(error) # 更新权重
return weights
# 测试
X = np.random.rand(100, 5)
y = np.random.randint(0, 2, size=(100, 1))
weights = batch_gradient_ascent(X, y)
print(weights)
```
在该示例中,我们定义了sigmoid函数和小批量梯度上升算法。然后使用随机数生成了一个100x5的样本矩阵X和一个100x1的标签向量y,并使用batch_gradient_ascent函数对X和y进行训练,得到了最终权重weights。
阅读全文