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

别再只懂二分类!逻辑回归+Softmax多分类实战,保姆级教程奉上 - 详解

别再只懂二分类!逻辑回归+Softmax多分类实战,保姆级教程奉上 - 详解

目录

一、引言

二、核心原理

01、Softmax函数

02、Softmax回归

三、代码实战

四、可视化图表

01、特征重要性对比

02、预测概率分布

03、分类边界对比


一、引言

提到逻辑回归,多数人第一反应是,哦,那个做二分类的算法。比如判断邮件是否为垃圾邮件、用户是否会点击广告。但实际业务中,我们常常遇到更复杂的分类需求,比如根据用户行为预测其属于高价值客户,潜力客户还是流失风险客户。逻辑回归https://mp.weixin.qq.com/s?__biz=MzE5MTcyOTQwMw==&mid=2247484873&idx=1&sn=db0f89834606b6e0fd07082bb5649107&scene=21#wechat_redirect

今天就带大家突破逻辑回归的二分类局限,重点分享如何用Softmax回归实现多分类任务。

二、核心原理

01、Softmax函数

Softmax函数的作用,就是把这些得分转化为0-1之间的概率值,且所有类别概率之和为1。

图片

02、Softmax回归

Softmax 回归的流程主要分为以下3步。

1.线性预测得分:先通过线性模型计算每个类别的原始得分。

2.Softmax概率转换:将所有类别的原始得分代入Softmax函数,得到每个类别的概率。

3.交叉熵损失:为了让模型预测的概率接近真实标签,我们使用交叉熵损失来衡量误差。

三、代码实战

接下来我们用鸢尾花数据集做实战,该数据集包含3种鸢尾花(Setosa、Versicolor、Virginica),共150个样本,每个样本有4 个特征(花瓣长度、花瓣宽度、花萼长度、花萼宽度)。

我们会用Softmax回归和决策树分别训练模型,看看两种算法的分类效果差异。

在scikit-learn中,逻辑回归默认支持多分类,所以可以换成multinomial参数就是Softmax回归。

# 初始化Softmax回归模型(solver选'sag',适合多分类且数据量大的场景)
softmax_model = LogisticRegression(
    multi_class='multinomial',  # 启用Softmax回归
    solver='sag',               # 优化器
    max_iter=1000,              # 最大迭代次数
    random_state=42
)
# 训练模型
softmax_model.fit(X_train_scaled, y_train)
# 在测试集上预测
y_pred_softmax = softmax_model.predict(X_test_scaled)
y_pred_prob_softmax = softmax_model.predict_proba(X_test_scaled)  # 输出每个类别的概率
# 计算准确率
accuracy_softmax = accuracy_score(y_test, y_pred_softmax)
print("Softmax回归测试集准确率:", round(accuracy_softmax, 4))
# 输出分类报告(精确率、召回率、F1-score)
print("\nSoftmax回归分类报告:")
print(classification_report(y_test, y_pred_softmax, target_names=['类别0', '类别1', '类别2']))

下面我们再训练一个决策树模型做对比。

# 初始化决策树模型
dt_model = DecisionTreeClassifier(
    max_depth=3,          # 限制树深度,避免过拟合
    random_state=42
)
# 训练模型
dt_model.fit(X_train, y_train)  # 决策树对特征尺度不敏感,无需标准化
# 在测试集上预测
y_pred_dt = dt_model.predict(X_test)
# 计算准确率
accuracy_dt = accuracy_score(y_test, y_pred_dt)
print("决策树测试集准确率:", round(accuracy_dt, 4))
# 输出分类报告
print("\n决策树分类报告:")
print(classification_report(y_test, y_pred_dt, target_names=['类别0', '类别1', '类别2']))

四、可视化图表

先说结论,在本次三分类问题上,Softmax回归准确率为0.9333,决策树准确率为0.9667。虽然Softmax回归的准确率略逊一筹,但是Softmax模型简单、可解释性强,可以作为一个基准模型与其他模型进行对比。

01、特征重要性对比

在Softmax回归中,每个类别的权重绝对值大小可以反映出特征对该类别的影响,决策树则直接输出特征重要性。

如下图,我们可以看出特征重要性,这里sepal是花萼,petal是花瓣。

1.花瓣特征(长度、宽度)是鸢尾花分类的核心依据:Softmax回归中virginica类的花瓣权重极大,决策树中花瓣特征重要性远高于花萼。

2.花萼特征的作用更偏向特定类别:Softmax中花萼对setosa类的区分有一定作用,但决策树中花萼整体区分能力弱。

3.versicolor类的特征区分性弱:Softmax中versicolor类的所有特征权重都接近0,说明它的特征很模糊,难通过单一特征与其他类别明确区分。

图片

02、预测概率分布

如下图,大部分样本,模型对真实类别的预测概率很高,置信度强。少数样本对真实类别的预测概率相对低一些,置信度稍弱,但仍能正确分类。整体来看,Softmax 回归模型在前10个测试样本上表现出了较好的分类能力,大部分情况下能准确且高置信度地预测样本类别。

图片

03、分类边界对比

如下图,Softmax回归的线性边界试图用直线将不同类别样本分开。决策树的阶梯状边界通过更灵活的分段划分。

相比之下,决策树的边界对当前样本分布的拟合更优。

图片

代码获取:https://pan.quark.cn/s/063967171164?pwd=sr8A
提取码:sr8A

https://mp.weixin.qq.com/s/d3ZFeln4R8sPFVymG3wIZAhttps://mp.weixin.qq.com/s/d3ZFeln4R8sPFVymG3wIZA

请点击上方链接,关注【小小科研】公众号,了解更多详细内容哦!

感谢支持!

http://www.gsyq.cn/news/69178.html

相关文章:

  • 手把手带你通关Webug第一关:看懂SQL注入是怎么“玩”的
  • 技术总监亲述:工作授权不是甩锅,掌握这8步让团队战斗力提升300%
  • 关于Proteus在编译时提示Failed to set firmware property.的问题
  • 成群结队 - 冲刺总结
  • 从 Pandas 转向 Polars:新手常见的10 个问题与优化建议
  • 二进制兼容
  • 成群结队--冲刺计划
  • 第五天敏捷冲刺
  • Java进阶网络编程,UDP,TCP通信
  • IDEA标签窗口好行显示 类注释和方法注释
  • LabVIEW用直线边缘检测实现液位测量 - 教程
  • HEK293细胞:为什么它是重组蛋白表达的黄金标准?
  • 树莓派Docker部署AdGuard Home
  • 人工智能发展史简述
  • 第四天敏捷冲刺
  • 读书笔记 XILINX ug1137-Zynq UltraScale+ MPSoC Software Developer Guide 软件开发者指南 Chapter1Chapter2
  • Java创建对象完整流程详解
  • re笔记5
  • 北京陪诊公司排行:专业服务破解就医难题,三甲机构树立行业标杆
  • 北京上门收酒茅台五粮液洋酒老酒名酒董酒习酒
  • 北京上门收酒茅台五粮液洋酒老酒名酒
  • this view is read-only (IntelliJ IDEA) - 详解
  • 内存管理-55-工具-page_types - Hello
  • 2025年LED显示屏经销最新推荐,室内LED显示屏,户外LED显示屏,单色LED显示屏,全彩LED显示屏选择指南!
  • 糖尿病预测(较好的代码)
  • 北京上门收酒
  • AIM:用 AI 写 Git 提交信息
  • rllm中的推理流程
  • 第2天敏捷冲刺 - Helen
  • OOP-实验4