当前位置: 首页 > article >正文

AI开发:逻辑回归的概念 应用及开发初学- Python

逻辑回归的概念

逻辑回归是一种统计模型,主要用于分类任务。虽然名字中带“回归”,它实际上解决的是分类问题,特别是二分类问题(如是否患病、邮件是否为垃圾邮件等)。

逻辑回归的核心思想是:

  1. 使用线性回归来计算一个分数(即线性函数的输出)。
  2. 利用sigmoid函数将分数映射到一个介于0到1之间的概率。
  3. 根据概率值和一个阈值(通常是0.5)进行分类。

逻辑回归的用途

  1. 二分类问题:垃圾邮件分类、用户点击预测等。
  2. 多分类问题(通过扩展):一对多(One-vs-All)或多对多(One-vs-One)。
  3. 信用评分:判断贷款用户是否违约。
  4. 医学诊断:预测患者是否患某种疾病。

从浅入深的Python实例

1. 简单的逻辑回归

使用逻辑回归预测一个人的体重是否超标。

数据集:假设有一个简单的人工数据集,其中体重与BMI有关。

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split

# 生成数据
np.random.seed(0)
BMI = np.random.uniform(15, 35, 100)  # 随机生成100个BMI数据
labels = (BMI > 25).astype(int)       # 如果BMI > 25,则标签为1(超重),否则为0

# 数据分割
X_train, X_test, y_train, y_test = train_test_split(BMI.reshape(-1, 1), labels, test_size=0.2, random_state=0)

# 逻辑回归模型
model = LogisticRegression()
model.fit(X_train, y_train)

# 可视化预测结果
x_vals = np.linspace(15, 35, 100).reshape(-1, 1)
y_probs = model.predict_proba(x_vals)[:, 1]  # 获取预测概率

plt.scatter(BMI, labels, label="Data", color="blue")
plt.plot(x_vals, y_probs, label="Prediction", color="red")
plt.axvline(25, color="green", linestyle="--", label="Threshold (BMI=25)")
plt.xlabel("BMI")
plt.ylabel("Probability of Being Overweight")
plt.legend()
plt.title("Logistic Regression for BMI Classification")
plt.show()

 

2. 逻辑回归的数学原理

逻辑回归使用的概率公式为:

P(y=1∣x)=11+e−zP(y=1|x) = \frac{1}{1 + e^{-z}}

其中 z=w⋅x+bz = w \cdot x + b。

通过最大化对数似然函数(log-likelihood),模型学会选择最佳参数 ww 和 bb。


3. 如何设计逻辑回归

设计逻辑回归时需要关注以下几点:

  1. 特征选择

    • 确保输入特征对目标输出具有较好的区分能力。
    • 可以尝试不同的特征组合,通过交叉验证评估效果。
  2. 数据标准化

    • 对数值型特征进行标准化(如使用 StandardScaler),避免特征尺度影响模型。
  3. 正则化

    • 为了防止过拟合,可以在损失函数中添加正则项,如 L1L1 或 L2L2 正则化。
    • sklearn 中,逻辑回归默认使用 L2L2 正则化。
  4. 处理不平衡数据

    • 如果分类数据不均衡,可以调整分类权重(class_weight 参数)。

实例:使用正则化和多特征

from sklearn.datasets import make_classification
from sklearn.preprocessing import StandardScaler

# 生成数据集
X, y = make_classification(n_samples=500, n_features=5, n_informative=3, n_redundant=2, random_state=0)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)

# 数据标准化
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

# 逻辑回归模型(添加正则化)
model = LogisticRegression(penalty='l2', solver='lbfgs', class_weight='balanced')
model.fit(X_train, y_train)

# 模型评估
accuracy = model.score(X_test, y_test)
print(f"Test Accuracy: {accuracy:.2f}")
Test Accuracy: 0.83

 


4. 逻辑回归扩展:多分类

逻辑回归可以通过Softmax函数扩展到多分类问题。sklearn 中内置支持:

from sklearn.datasets import load_iris

# 载入数据集
data = load_iris()
X, y = data.data, data.target

# 训练多分类逻辑回归
model = LogisticRegression(multi_class='multinomial', solver='lbfgs', max_iter=200)
model.fit(X, y)

# 预测
print("Predicted class for first sample:", model.predict(X[:1]))
print("Class probabilities for first sample:", model.predict_proba(X[:1]))
Predicted class for first sample: [0]
Class probabilities for first sample: [[9.81527418e-01 1.84725677e-02 1.45953492e-08]]

 


总结

  1. 逻辑回归的核心思想:通过线性模型得到分数,利用Sigmoid或Softmax函数将分数映射到概率。
  2. 用途广泛:从简单的二分类到多分类问题,逻辑回归都是有效工具。
  3. 设计逻辑回归的技巧:特征选择、正则化、处理数据不平衡是关键。

结合实际问题,逐步调整模型的参数与输入特征,能让逻辑回归发挥更强的分类效果!


http://www.kler.cn/a/416371.html

相关文章:

  • 日常应用开发遇到的小问题二三则
  • Uniapp 安装安卓、IOS模拟器并调试
  • 长时间无事可做是个危险信号
  • aws出现创建ec2连接报错(网络问题)
  • webpack5 的五大核心配置(二)
  • redis中的bigkey及读取优化
  • 深度学习3:数据预处理使用Pandas与PyTorch的实践
  • 全面解析 MySQL 常见问题的排查与解决方法
  • USB-C取电协议芯片与LDR6328的功能解析
  • 【设计模式】创建型模式之单例模式(饿汉式 懒汉式 Golang实现)
  • SpringBoot小知识(2):日志
  • 揭示Lyapunov方法的奥秘:控制理论中的稳定性之钥
  • 力扣96:不同的二叉搜索树
  • Docker 部署Nginx 数据卷挂载 配置文件挂载
  • Python 绘制 向量减法
  • LeetCode 3208. 交替组 II
  • 【Linux网络编程】TCP套接字
  • 《硬件架构的艺术》笔记(九):电磁兼容性能设计指南
  • AI自动化剪辑工具:可将长视频中精彩部分提取合成短视频
  • 《C/C++ 链接数据库(MySQL)超级详细指南》