Python 实现逻辑回归算法:Sigmoid 函数、代价函数、梯度下降和预测
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 **********#
代码解释
-
Sigmoid 函数:
sigmoid(z)函数返回 sigmoid 函数的值,其中z是函数变量。- sigmoid 函数用于将线性模型的输出压缩到 0 到 1 之间,用于表示分类概率。
-
代价函数:
cost(theta, X, y)函数返回逻辑回归的代价函数值,其中theta是模型参数,X是特征矩阵,y是标签向量。- 代价函数用于衡量模型预测结果与真实标签之间的差异,目标是找到使代价函数值最小的参数
theta。
-
批量梯度下降:
gradient(theta, X, y)函数计算梯度下降算法的梯度值。- 梯度下降算法通过不断更新参数
theta,沿着梯度下降的方向,寻找代价函数的最小值。
-
假设函数:
predict(theta, X)函数使用训练好的模型,对新的输入数据进行预测。- 该函数返回一个预测结果列表,每个元素表示对应输入数据的预测类别。
本代码提供了实现逻辑回归算法的核心部分,可以根据实际应用场景进行扩展和修改。例如,可以添加数据预处理、模型评估等步骤,使代码更加完善。
原文地址: https://www.cveoy.top/t/topic/nv0r 著作权归作者所有。请勿转载和采集!