概率基础——逻辑回归多分类法

news2024/12/25 13:21:25

概率基础——逻辑回归多分类法

逻辑回归是一种经典的分类算法,通常用于解决二分类问题。然而,在实际应用中,我们经常会遇到多分类任务。本文将简单介绍逻辑回归的理论、多分类方法以及优缺点,并提供一个Python实现的示例。

逻辑回归的理论及公式

逻辑回归是一种基于概率的线性分类模型。给定输入特征 X X X,逻辑回归通过线性组合加上一个 s i g m o i d sigmoid sigmoid函数(也称为逻辑函数)来计算样本属于正类的概率:

P ( Y = 1 ∣ X ) = 1 1 + e − ( β 0 + β 1 X 1 + β 2 X 2 + . . . + β n X n ) P(Y=1|X) = \frac{1}{1 + e^{-\left(\beta_0 + \beta_1X_1 + \beta_2X_2 + ... + \beta_nX_n\right)}} P(Y=1∣X)=1+e(β0+β1X1+β2X2+...+βnXn)1

其中, Y Y Y是输出变量(类别), X X X是输入特征, β \beta β是模型参数, e e e是自然对数的底。

逻辑回归的多分类方法

在逻辑回归中,处理多分类任务通常有两种方法:

1. 修改逻辑回归的损失函数

在传统的二分类逻辑回归中,使用sigmoid函数作为激活函数。但在多分类情况下,我们可以使用softmax函数,将逻辑回归的损失函数修改为交叉熵损失函数。这样可以输出多个类别的预测概率。

2. 将多分类任务分解为多个二分类任务

另一种方法是将多分类任务分解为多个二分类任务。常见的分解方法包括:

  • OvR(One vs Rest):每次将一个类别样本作为正类,其他类别样本作为负类,生成N个二分类器,最后选取概率最大的类别作为预测结果。

  • MvM(Many vs Many):将一部分类别样本作为正类,另一部分类别样本作为负类,生成多个二分类器。通过编码和解码的方式进行分类。

  • OvO(One vs One):每次选择两个类别样本进行训练,生成N(N-1)/2个二分类器。在预测时,通过投票法选择最终分类结果。

逻辑回归多分类法的优缺点

优点:

  • 训练速度快,计算量与特征数目相关。
  • 模型简单易于理解,可解释性强。
  • 可以动态调整分类阈值,得到不同的概率预测。

缺点:

  • 特征处理复杂,需要归一化和较多的特征工程。
  • 模型性能有限,只能处理线性可分的数据。
  • 难以处理数据不平衡问题,倾向于将所有样本都预测为占比较大的类别。

Python实现示例

下面通过一个示例,展示了如何使用逻辑回归进行多分类任务的处理。

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

# 生成示例数据
X, y = make_classification(n_samples=1000, n_features=20, n_classes=3, n_clusters_per_class=1, random_state=42)

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 构建逻辑回归模型
log_reg = LogisticRegression(multi_class='auto', solver='lbfgs')

# 训练模型
log_reg.fit(X_train, y_train)

# 预测测试集
y_pred = log_reg.predict(X_test)

# 绘制y_test和y_pred的图像
plt.figure(figsize=(10, 6))

plt.plot(np.arange(len(y_test)), y_test, 'bo', label='Actual Class')
plt.plot(np.arange(len(y_test)), y_pred, 'r+', label='Predicted Class')
plt.xlabel('Sample Index')
plt.ylabel('Class')
plt.title('Comparison of Actual and Predicted Classes')
plt.legend()
plt.grid(True)
plt.show()

在这里插入图片描述

上述代码中,生成了一些示例数据,并使用逻辑回归模型进行训练和预测。然后,我们将实际的类别(y_test)和预测的类别(y_pred)绘制在同一图像上,以便进行比较。接下来,我们来解释代码的具体内容和绘制结果。

make_classification:用于生成示例数据,创建了一个具有 1000 个样本和 20 个特征的数据集,共有 3 个类别。
train_test_split:用于划分训练集和测试集,测试集占比为 20%。
LogisticRegression:构建逻辑回归模型。
fit:用训练数据拟合模型。
predict:对测试数据进行预测。
绘制图像:使用 matplotlib 库将实际类别和预测类别的值绘制在同一图像上,蓝色点表示实际类别,红色加号表示预测类别。

结论

逻辑回归多分类法提供了一种简单而有效的方法来解决多分类问题。本文介绍了逻辑回归的理论基础、多分类方法、优缺点以及一个Python实现示例。希望本文能够帮助读者更好地理解和应用逻辑回归多分类方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1532261.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2 使用GPU理解并行计算

2.1 简介 本章旨在对并行程序设计的基本概念及其与GPU技术的联系做一个宽泛的介绍。本章主要面向具有串行程序设计经验,但对并行处理概念缺乏了解的读者。我们将用GPU的基本知识来讲解并行程序设计的基本概念。 2.2 传统的串行代码 绝大多数程序员是在串行程序占据…

3.6 条件判断语句cmp,je,ja,jb及adc、sbb指令

汇编语言 1. adc指令 adc是带进位加法指令,它利用了CF位上记录的进位值指令格式:adc 操作对象1,操作对象2功能:操作对象1 操作对象1 操作对象2 CF例如:adc ax,bx,实现的功能是:ax ax bx …

利用JS实现网页全自动翻译

由于谷歌翻译退出内地市场,可能导致谷歌浏览器默认提供的网页全文翻译在内地无法使用。今天我向大家推荐一个简洁的解决方案:只需两行 JavaScript 代码,即可实现 HTML 的全自动翻译,而无需修改页面、配置语言文件或使用 API 密钥。…

eth uniswap 套利交易案例四

交易hash: 0x085843b47c0d1b0f820b80c166ea8dd2e3928876fb353d107e49dcf879cf8426 交易时间: 2024.02.29 获利: 196,284刀 balancer 借了 338个 weth, 然后和 0x3BA6A019eD5541b5F5555d8593080042Cf3ae5f4 交易用 282个weth 换了293个wste…

什么是状态压缩DP???

1. 引言 相信大家已经对普通的01背包或者其他背包问题已经很熟练了,但是有时候我们去解决NP问题(指数级别的复杂度,比如N!),时间复杂度就会非常之大 所以,这个时候我们需要寻找更加优化的方法…

微信小程序调试、断点调试

1、wxml 查看对应的页面组件 2、console面板可以用来打印信息 3、sources 用来断点调试 4、network面板用来调试接口 5、storage面板 可以查看每个key对应的value内容,这些数据在用户使用小程序时被持久化保存在本地。

Java基础之多线程

多线程 一、多线程的创建1.1 方式一 继承Thread类1.2 方式二 实现Runnable接口1.3 方式二的化简(匿名内部类)1.4 实现Callable接口(JDK5新增)1.5 小节 二、Thread常用API2.1 获取当前线程对象2.2 获取/设置线程名称2.3 Thread的构造器2.4 Thread类的线程休眠方法2.5 小节 三、线…

3 CUDA硬件概述

3.1 PC 架构 首先,我们看看当下许多PC中都使用的酷睿2(Core2)处理器的典型架构,然后分析一下它是如何影响我们使用GPU 加速器的(如图 3-1所示)。 图3-1典型的酷睿2(Core2)系列处理器的结构图 由于所有的 GPU 设备都是通过 PCI-E(Peripheral Communicat…

【教程】如何自制一个ArcGIS工具箱

ArcGIS已经提供了十分丰富的工具箱,但是如果遇到一些需要批处理或者需要将多个工具箱组合使用,就需要根据需求自制一个ArcGIS的工具箱。 下面介绍一下如何自制一个ArcGIS/ArcGIS Pro工具箱,主要是使用ArcPy和模型构建器。 使用模型构建器 使…

给计算机专业学生的建议

如果条件允许,推荐尝试考研。虽然研究生学历的价值在一定程度上有所下降,但计算机专业研究生的发展前景通常优于本科生。如果决定考研,应尽力提高自己的学校等级。比赛成绩对于求职帮助有限,除非是含金量高的比赛,通常…

隐语笔记1 —— 数据可信流通,从运维信任到技术信任

数据可信流通体系 关于可信的反思 信任是涉及交易或交换关系的基础 信任的基石: 身份可确认利益可依赖能力有预期行为有后果 数据流通中的不可信风险:可信链条失效&崩塌 法规层面:数据的持有权,加工权,经营权…

FPGA学习_时序约束以及VIVADO时序报告

文章目录 前言时序约束的目的一、时序约束种类1、约束主时钟2、约束衍生时钟3、约束虚拟时钟4、input delay5、output delay6、约束异步时钟组7、约束互斥时钟8、假路径约束9、多周期约束 二、VIVADO时序报告三、从时序的角度看为什么寄存器赋值慢一拍 前言 一边学习一边补充当…

Unity Toggle与Toggle Group的妙用

Toggle与Toggle Group结合使用,妙处多多。 因为在同一Toggle Group内只有一个Toggle可以被选中,那么对于我们要创建单选按钮组、游戏的一些开关、暗夜模式、筛选不同显示内容等功能都非常好用。 比如我要实现通过点击不同按钮,从而筛选显示不同内容&am…

IO扩展芯片应用及方案选型 (74HC595,74HC165,8255,CH351等)

IO扩展芯片应用及方案选型 (74HC595,74HC165,8255,CH351等) 参考书籍《振南技术干货集:单片机–基础进阶创业十年》作者:于振南 在我们进行单片机开发的时候, 经常会发现I/O 口不够用。 一方面是因为我们产品中往往都包括很多的功能, 又有显示, 又有存储…

uniapp,导航栏(切换项)有多项,溢出采取左滑右滑的形式展示

一、实现效果 当有多项的导航&#xff0c;或者说切换项&#xff0c;超出页面的宽度&#xff0c;我们采取可滑动的方式比较好一些&#xff01;并且在页面右边加个遮罩&#xff0c;模拟最右边有渐变效果&#xff01; 二、实现代码 html代码&#xff1a; <!-- 头部导航栏 --…

探究Kafka主题删除失败的根本原因

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 探究Kafka主题删除失败的根本原因 前言主题删除的基础主题删除的定义和作用&#xff1a;删除操作的基本流程&#xff1a; 可能存在删除异常的因素数据积压的处理方法Broker状态异常处理方法通用方法 前…

PyTorch 深度学习(GPT 重译)(一)

第一部分&#xff1a;PyTorch 核心 欢迎来到本书的第一部分。在这里&#xff0c;我们将与 PyTorch 迈出第一步&#xff0c;获得理解其结构和解决 PyTorch 项目机制所需的基本技能。 在第一章中&#xff0c;我们将首次接触 PyTorch&#xff0c;了解它是什么&#xff0c;解决了…

【JS】数组查重

码 /*** 数组查重* param {Array} arr 查重的数组* returns Array 返回不重复的数组 */ const noReArr arr > [...new Set(arr)]const a [12,12,3,4] console.log( noReArr(a) );效果图

使用STM32 再实现电动车防盗

项目需求 点击遥控器 A 按键&#xff0c;系统进入警戒模式&#xff0c;一旦检测到震动&#xff08;小偷偷车&#xff09;&#xff0c;则喇叭发出声响报警&#xff0c; 吓退小偷。 点击遥控器 B 按键&#xff0c;系统退出警戒模式&#xff0c;再怎么摇晃系统都不会报警&…

vscode搜索总是搜到修改记录文件如何处理

如图每次搜索出来的结果总是有好多编辑记录中的文件&#xff0c;给自己找文件及提交代码时带来很大困扰&#xff0c;每次都得删特别麻烦。 解决办法&#xff1a; 如上图在插件里找到 local history 点击 ”禁用“ 即可。以后再编辑代码就不会产生修改记录文件了。 如果直接搜索…