小批量梯度下降法训练实现逻辑回归python
时间: 2024-05-11 15:11:23 浏览: 115
基于 Python 的梯度下降、逻辑回归等源码实现
小批量梯度下降法是一种常用的优化算法,用于训练逻辑回归模型。下面是它的实现逻辑和Python代码示例:
1. 初始化参数:首先,我们需要初始化逻辑回归模型的参数,包括权重和偏置项。
2. 定义损失函数:逻辑回归模型通常使用交叉熵损失函数来衡量预测结果与真实标签之间的差异。
3. 获取数据:从训练集中获取一小批量的样本和对应的标签。
4. 前向传播:使用当前的参数进行前向传播,计算预测结果。
5. 计算损失:将预测结果与真实标签进行比较,计算损失值。
6. 反向传播:根据损失值计算梯度,并更新参数。
7. 重复步骤3-6:重复执行上述步骤,直到达到指定的迭代次数或收敛条件。
下面是一个简单的Python代码示例:
```python
import numpy as np
# 初始化参数
def initialize_parameters(dim):
w = np.zeros((dim, 1))
b = 0
return w, b
# 定义sigmoid函数
def sigmoid(z):
return 1 / (1 + np.exp(-z))
# 前向传播
def forward_propagation(X, w, b):
Z = np.dot(X, w) + b
A = sigmoid(Z)
return A
# 计算损失函数
def compute_loss(A, Y):
m = Y.shape
loss = -np.sum(Y * np.log(A) + (1 - Y) * np.log(1 - A)) / m
return loss
# 反向传播
def backward_propagation(X, A, Y):
m = Y.shape
dw = np.dot(X.T, (A - Y)) / m
db = np.sum(A - Y) / m
return dw, db
# 更新参数
def update_parameters(w, b, dw, db, learning_rate):
w -= learning_rate * dw
b -= learning_rate * db
return w, b
# 小批量梯度下降法训练逻辑回归模型
def train(X, Y, num_iterations, batch_size, learning_rate):
m, dim = X.shape
w, b = initialize_parameters(dim)
for i in range(num_iterations):
# 获取小批量样本和标签
indices = np.random.choice(m, batch_size)
X_batch = X[indices]
Y_batch = Y[indices]
# 前向传播
A = forward_propagation(X_batch, w, b)
# 计算损失函数
loss = compute_loss(A, Y_batch)
# 反向传播
dw, db = backward_propagation(X_batch, A, Y_batch)
# 更新参数
w, b = update_parameters(w, b, dw, db, learning_rate)
if i % 100 == 0:
print("Loss after iteration {}: {}".format(i, loss))
return w, b
```
使用上述代码,你可以通过调用`train`函数来训练逻辑回归模型。其中,`X`是输入特征矩阵,`Y`是对应的标签向量,`num_iterations`是迭代次数,`batch_size`是每次迭代中使用的样本数量,`learning_rate`是学习率。
阅读全文