Python 梯度下降算法实现逻辑斯谛回归
使用 Python 实现梯度下降算法训练逻辑斯谛回归模型
梯度下降算法需要在每次迭代中计算损失函数的梯度,并更新权重向量。以下是完整的代码实现:
import numpy as np
def sigmoid(z):
# sigmoid函数
return 1 / (1 + np.exp(-z))
def log_loss_dloss(X, y, w):
# 逻辑斯谛回归损失的梯度
n_samples, n_features = X.shape
# 计算预测值
y_pred = sigmoid(X.dot(w))
# 计算损失函数梯度
dloss = X.T.dot(y_pred - y) / n_samples
return dloss
def gradient_descent(X, y, max_iter=1000, alpha=0.001):
# 批量梯度下降算法
n_samples, n_features = X.shape
# 初始化权重向量
w = np.zeros((n_features, 1))
for _ in range(max_iter):
# 计算梯度
dloss = log_loss_dloss(X, y, w)
# 更新权重向量
w -= alpha * dloss
return w.ravel()
X = np.array([[-1, -1], [-2, -1], [1, 1], [2, 1]])
y = np.array([0, 0, 1, 1])
print(gradient_descent(X, y))
这段代码中,使用了 sigmoid 函数将线性预测值转换为概率值,并使用逻辑斯谛损失函数来衡量预测的好坏程度。在梯度下降算法中,通过不断迭代计算梯度并更新权重向量来最小化损失函数。最后输出的是学习到的权重数组。
原文地址: https://www.cveoy.top/t/topic/rY8 著作权归作者所有。请勿转载和采集!