使用 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 函数将线性预测值转换为概率值,并使用逻辑斯谛损失函数来衡量预测的好坏程度。在梯度下降算法中,通过不断迭代计算梯度并更新权重向量来最小化损失函数。最后输出的是学习到的权重数组。

Python 梯度下降算法实现逻辑斯谛回归

原文地址: https://www.cveoy.top/t/topic/rY8 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录