Python 实现逻辑回归算法:Sigmoid 函数、代价函数、梯度下降和预测

本代码展示了逻辑回归算法的核心部分:Sigmoid 函数、代价函数、梯度下降和预测。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import scipy.optimize as opt

# S 型函数
def sigmoid(z):
    #返回 sigmoid 的函数值,z 为函数变量(参考编程要求中的 sigmoid 函数)
    #********** Begin **********#
    return 1 / (1 + np.exp(-z))
    #********** End **********#

#代价函数
def cost(theta, X, y):
    #X 、 y 、 theta 与数据预处理参数保持一致
    #返回代价函数的值(参考编程要求中的代价函数)
    #********** Begin **********#
    m = len(y)
    h = sigmoid(X @ theta)
    J = (-1/m) * (y.T @ np.log(h) + (1-y).T @ np.log(1-h))
    return J
    #********** End **********#

#批量梯度下降
def gradient(theta, X, y):
    return (X.T @ (sigmoid(X @ theta) - y))/len(X)

#假设函数
def predict(theta, X):
    #X 、 y 、 theta 与数据预处理与参数保持一致
    #将所有预测出的值存储在 list 中并返回(参考编程要求中的假设函数)
    #********** Begin **********#
    pred = sigmoid(X @ theta)
    return [1 if x >= 0.5 else 0 for x in pred]
    #********** End **********#

代码解释

  1. Sigmoid 函数

    • sigmoid(z) 函数返回 sigmoid 函数的值,其中 z 是函数变量。
    • sigmoid 函数用于将线性模型的输出压缩到 0 到 1 之间,用于表示分类概率。
  2. 代价函数

    • cost(theta, X, y) 函数返回逻辑回归的代价函数值,其中 theta 是模型参数,X 是特征矩阵,y 是标签向量。
    • 代价函数用于衡量模型预测结果与真实标签之间的差异,目标是找到使代价函数值最小的参数 theta
  3. 批量梯度下降

    • gradient(theta, X, y) 函数计算梯度下降算法的梯度值。
    • 梯度下降算法通过不断更新参数 theta,沿着梯度下降的方向,寻找代价函数的最小值。
  4. 假设函数

    • predict(theta, X) 函数使用训练好的模型,对新的输入数据进行预测。
    • 该函数返回一个预测结果列表,每个元素表示对应输入数据的预测类别。

本代码提供了实现逻辑回归算法的核心部分,可以根据实际应用场景进行扩展和修改。例如,可以添加数据预处理、模型评估等步骤,使代码更加完善。

Python 实现逻辑回归算法:Sigmoid 函数、代价函数、梯度下降和预测

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

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