Python 逻辑回归实现 - Sigmoid 函数、代价函数、梯度下降和预测
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]
代码解释
-
Sigmoid 函数:
sigmoid(z)函数计算 Sigmoid 函数的值,该函数将输入值映射到 0 到 1 之间,用于预测概率。
-
代价函数:
cost(theta, X, y)函数计算逻辑回归的代价函数,用于衡量模型的预测误差。m表示训练样本数量,h是模型的预测概率值,J是代价函数值。
-
批量梯度下降:
gradient(theta, X, y)函数计算代价函数的梯度,用于更新模型参数theta,以最小化代价函数。
-
假设函数:
predict(theta, X)函数根据训练好的模型参数theta预测新的样本的类别。pred是模型对新样本的预测概率值,根据概率值大于 0.5 或小于 0.5,将样本分类为 1 或 0。
使用说明
- 将
X、y替换为您的实际数据。 - 使用
scipy.optimize.fmin_tnc函数优化模型参数theta。 - 使用
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 实现逻辑回归算法,并使用实际数据进行模型训练和预测。您可以根据您的具体需求修改代码,以实现更复杂的逻辑回归模型。
原文地址: https://www.cveoy.top/t/topic/nv0m 著作权归作者所有。请勿转载和采集!