逻辑回归模型的梯度下降算法代码
时间: 2024-04-07 07:10:11 浏览: 120
以下是逻辑回归模型的梯度下降算法代码:
```
import numpy as np
def sigmoid(x):
"""
Sigmoid函数实现
"""
return 1 / (1 + np.exp(-x))
def logistic_regression(X, y, lr=0.01, num_iter=100000):
"""
逻辑回归模型的梯度下降算法实现
"""
# 初始化参数
m, n = X.shape
theta = np.zeros((n, 1))
bias = 0
# 梯度下降循环
for i in range(num_iter):
# 计算sigmoid函数值
z = np.dot(X, theta) + bias
h = sigmoid(z)
# 计算损失函数值
loss = (-1/m) * np.sum(y * np.log(h) + (1-y) * np.log(1-h))
# 计算梯度
d_theta = (1/m) * np.dot(X.T, (h-y))
d_bias = (1/m) * np.sum(h-y)
# 更新参数
theta = theta - lr * d_theta
bias = bias - lr * d_bias
# 每1000次迭代输出一次损失函数值
if i % 1000 == 0:
print(f"Loss after iteration {i}: {loss}")
return theta, bias
```
其中,sigmoid函数用于将预测值转换为概率值;logistic_regression函数实现了逻辑回归模型的梯度下降算法,输入参数包括样本特征X和标签y,学习率lr和迭代次数num_iter。输出参数包括参数向量theta和偏置bias。在迭代过程中,每1000次迭代输出一次损失函数值。
阅读全文