关于逻辑回归(LR)模型的简单介绍

逻辑回归是一种经典的分类算法,尽管名字中含有 "回归",但实际上它是一种用于解决二分类问题的线性分类器。其核心思想是使用逻辑函数(通常是 Sigmoid 函数)将线性回归的结果映射到 0 到 1 的范围内,将线性回归的输出转换为概率,以此来表示样本属于某一类别的概率。

下面,我将从应用场景,核心代码实现(python)的方式将这块部分展开说明。

1.主要应用场景

  • 信用评分:根据用户的各种特征(如收入、年龄、历史信用记录等)预测用户是否会违约。
  • 疾病诊断:根据病人的症状、检查结果等特征预测是否患有某种疾病。
  • 市场营销:根据用户的行为和特征预测用户是否会对营销活动做出响应。
  • 文本分类:将文本分类为不同类别,例如将邮件分类为垃圾邮件或正常邮件。

2.Python 实现示例

这里简单介绍一个使用 tensorflow 实现逻辑回归的一个示例,使用梯度下降法训练模型

import tensorflow as tf

import numpy as np

生成一些模拟的二分类数据

np.random.seed(42)

X = np.random.randn(100, 2)

y = np.random.binomial(1, 1 / (1 + np.exp(-(2 * X[:, 0] + 3 * X[:, 1] - 1))).reshape(-1, 1)

划分训练集和测试集

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

定义模型参数

learning_rate = 0.01

epochs = 1000

定义模型变量

weights = tf.Variable(tf.random.normal(shape=(2, 1), stddev=0.1))

bias = tf.Variable(tf.random.normal(shape=(1,), stddev=0.1))

定义逻辑回归函数

def logistic_regression(x):

logits = tf.matmul(x, weights) + bias

return tf.sigmoid(logits)

定义损失函数(交叉熵损失)

def loss_fn(y_true, y_pred):

return tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(labels=y_true, logits=tf.squeeze(y_pred)))

定义优化器

optimizer = tf.optimizers.SGD(learning_rate)

训练模型

for epoch in range(epochs):

with tf.GradientTape() as tape:

y_pred = logistic_regression(X_train)

loss = loss_fn(y_train, y_pred)

gradients = tape.gradient(loss, [weights, bias])

optimizer.apply_gradients(zip(gradients, [weights, bias]))

if (epoch + 1) % 100 == 0:

print(f"Epoch {epoch+1}/{epochs}, Loss: {loss.numpy():.4f}")

评估模型

y_pred_prob = logistic_regression(X_test)

y_pred = tf.cast(y_pred_prob > 0.5, tf.int32)

计算准确率

accuracy = tf.reduce_mean(tf.cast(tf.equal(y_pred, y_test), tf.float32))

print(f"Accuracy: {accuracy.numpy():.2f}")

查看最终的模型参数

print(f"Final weights: {weights.numpy()}")

print(f"Final bias: {bias.numpy()}")

代码解释:

  1. 数据生成和预处理

    • 使用 numpy 生成模拟的二分类数据,这里的真实数据是通过逻辑函数生成的,添加一些随机噪声。
    • 使用 train_test_split 将数据划分为训练集和测试集。
  2. 模型参数初始化

    • 使用 tf.Variable 初始化权重和偏置,使用正态分布进行随机初始化。
  3. 逻辑回归函数定义

    • logistic_regression 函数使用矩阵乘法和加法计算线性组合,然后使用 sigmoid 函数将结果映射到 0 到 1 的范围。
  4. 损失函数定义

    • 使用 sigmoid_cross_entropy_with_logits 计算交叉熵损失。
  5. 优化器

    • 使用 tf.optimizers.SGD 作为随机梯度下降优化器。
  6. 训练过程

    • 使用 tf.GradientTape 记录梯度信息,计算损失,计算梯度,更新参数。
  7. 评估

    • 计算测试集上的预测概率,将概率大于 0.5 的预测为类别 1,计算准确率。

使用 tensorflow 的实现更灵活,适合深入理解逻辑回归的训练过程和进行自定义修改。

相关推荐
无难事者若执15 分钟前
新手村:逻辑回归-理解03:逻辑回归中的最大似然函数
算法·机器学习·逻辑回归
达柳斯·绍达华·宁24 分钟前
自动驾驶04:点云预处理03
人工智能·机器学习·自动驾驶
IT从业者张某某32 分钟前
机器学习-04-分类算法-03KNN算法案例
算法·机器学习·分类
chen_song_35 分钟前
WebRTC的ICE之TURN协议的交互流程中继转发Relay媒体数据的turnserver的测试
算法·音视频·webrtc·交互·媒体
补三补四1 小时前
k近邻算法K-Nearest Neighbors(KNN)
人工智能·机器学习
蒙奇D索大1 小时前
【数据结构】图解图论:度、路径、连通性,五大概念一网打尽
数据结构·考研·算法·图论·改行学it
uhakadotcom1 小时前
2025年春招:如何使用DeepSeek + 豆包优化简历,轻松敲开心仪公司的大门
算法·面试·github
小白狮ww1 小时前
Retinex 算法 + MATLAB 软件,高效率完成图像去雾处理
开发语言·人工智能·算法·matlab·自然语言处理·图像识别·去雾处理
databook2 小时前
线性判别分析(LDA):降维与分类的完美结合
python·机器学习·scikit-learn
硅谷秋水2 小时前
大语言模型智体的综述:方法论、应用和挑战(下)
人工智能·深度学习·机器学习·语言模型·自然语言处理