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

本代码使用 Python 实现逻辑回归算法,包括 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 函数)
    return 1/(1+np.exp(-z))
    
#代价函数
def cost(theta, X, y):
    #X 、 y 、 theta 与数据预处理参数保持一致
    #返回代价函数的值(参考编程要求中的代价函数)
    m = len(X)
    h = sigmoid(X @ theta)
    J = (-1/m) * (y.T @ np.log(h) + (1-y).T @ np.log(1-h))
    return J

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

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

代码解释

  1. Sigmoid 函数

    • sigmoid(z) 函数计算 Sigmoid 函数的值,该函数将输入值映射到 0 到 1 之间,用于预测概率。
  2. 代价函数

    • cost(theta, X, y) 函数计算逻辑回归的代价函数,用于衡量模型的预测误差。
    • m 表示训练样本数量,h 是模型的预测概率值,J 是代价函数值。
  3. 批量梯度下降

    • gradient(theta, X, y) 函数计算代价函数的梯度,用于更新模型参数 theta,以最小化代价函数。
  4. 假设函数

    • predict(theta, X) 函数根据训练好的模型参数 theta 预测新的样本的类别。
    • pred 是模型对新样本的预测概率值,根据概率值大于 0.5 或小于 0.5,将样本分类为 1 或 0。

使用说明

  1. Xy 替换为您的实际数据。
  2. 使用 scipy.optimize.fmin_tnc 函数优化模型参数 theta
  3. 使用 predict(theta, X) 函数预测新的样本的类别。

示例

# 假设数据
X = np.array([[1, 2], [3, 4], [5, 6]])
y = np.array([0, 1, 1])

# 训练模型
theta = opt.fmin_tnc(func=cost, x0=np.zeros(X.shape[1]), args=(X, y))[0]

# 预测新样本
X_new = np.array([[7, 8]])
prediction = predict(theta, X_new)

print(f'预测结果: {prediction}')

本代码示例展示了如何使用 Python 实现逻辑回归算法,并使用实际数据进行模型训练和预测。您可以根据您的具体需求修改代码,以实现更复杂的逻辑回归模型。

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

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

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