首页 > 其他分享 >关于逻辑回归(LR)模型的简单介绍

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

时间:2025-01-22 12:02:12浏览次数:3  
标签:逻辑 pred 模型 random test LR tf weights numpy

        逻辑回归是一种经典的分类算法,尽管名字中含有 “回归”,但实际上它是一种用于解决二分类问题的线性分类器。其核心思想是使用逻辑函数(通常是 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 的实现更灵活,适合深入理解逻辑回归的训练过程和进行自定义修改。

标签:逻辑,pred,模型,random,test,LR,tf,weights,numpy
From: https://blog.csdn.net/eso1983/article/details/145281373

相关文章