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

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

逻辑回归是一种经典的分类算法,通常用于解决二分类问题。然而,在实际应用中,我们经常会遇到多分类任务。本文将简单介绍逻辑回归的理论、多分类方法以及优缺点,并提供一个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实现示例。希望本文能够帮助读者更好地理解和应用逻辑回归多分类方法。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【MySQL】图形化界面工具DataGrip安装&配置&使用

前言 大家好吖,欢迎来到 YY 滴MySQL系列 ,热烈欢迎! 本章主要内容面向接触过C Linux的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! YY的《C》专栏YY的《C11》专栏YY的…

npm出现内部错误,重新设置镜像

问题: 报错解释: 这个错误表明你尝试从一个指定的npm镜像源的响应时失败了。可能的原因包括网络问题、镜像源不可用、DNS解析问题或者镜像源的确已经下线或更改。 1.重新设置镜像源 设置淘宝镜像源: npm config set registry https://re…

网络面试——http 和 https 的区别

区别: 1. HTTP 是超文本传输协议,信息是明文传输,HTTPS 是具有安全性的 SSL 加密传输协议。HTTPS 是由 SSL HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全 2. 端口号:http 使用 80 端口&#…

ros小问题之差速轮式机器人轮子不显示(rviz gazebo)

在rviz及gazebo练习差速轮式机器人时,很奇怪,只有个机器人的底板及底部的两个万向轮,如下图, 后来查看相关.xacro文件,里面是引用包含了轮子的xacro文件,只需传入不同的参数即可调用生成不同位置的轮子&…

代码学习第24天----回溯算法

随想录日记part24 t i m e : time: time: 2024.03.10 主要内容:回溯算法在代码学习中尤其重要,所以今天继续加深对其的理解:1:递增子序列 ;2.全排列 ;3.全排列II 491.递…

MySQL基础-----事务(下)

目录 前言 一、并发事务问题 1.赃读 2.不可重复读 3.幻读 二、事务隔离级别 1.相关操作 2.案例演示 前言 本期我们继续上一期事务的内容,本期的主要讲解的是并发事务的相关问题以及解决方式,内容可能会比较难去理解,不过我会尽量详细说…

C++ UML类图

参考文章: (1)C UML类图详解 (2)C基础——用C实例理解UML类图 (3)C设计模式——UML类图 (4)[UML] 类图介绍 —— 程序员(灵魂画手)必备画图技能之…

31.HarmonyOS App(JAVA)鸿蒙系统app Service服务的用法

鸿蒙系统app Service服务的用法 后台任务调度和管控 HarmonyOS将应用的资源使用生命周期划分为前台、后台和挂起三个阶段。前台运行不受资源调度的约束,后台会根据应用业务的具体任务情况进行资源使用管理,在挂起状态时,会对应用的资源使用进…

《C语言深度剖析》---------关键字(1)

1.双击实质--->加载内存 windows系统里面,双击的本质就是运行程序,把程序加载到内存里面; 任何程序运行的时候都必须加载到内存里面; 程序没有运行之前在硬盘里面,为什么程序运行之前必须加载到内存里面呢&#…

Spring Web MVC入门(5)

响应 在我们前面的代码例子中, 都已经设置了响应数据Http响应结果可以是数据, 也可以是静态页面, 也可以针对响应设置状态码, Header信息等. 返回静态页面 创建前端页面index.html(注意路径) html代码如下: <!DOCTYPE html> <html lang"en"> <hea…

Nutanix 国产化替代|一文了解 SmartX 超融合替代可行性与迁移方案

2022 年 8 月 19 日&#xff0c;Nutanix&#xff08;路坦力&#xff09;宣布中国市场自 2023 财年起将转型为合作伙伴销售主导模式&#xff0c;引起了广泛关注&#xff1b;同时结合当前 IT 基础架构的国产化趋势背景&#xff0c;不少正在使用和考虑使用 Nutanix 产品的企业开始…

Vue 中预加载组件

在 Vue 中&#xff0c;利用 VueRouter 可以轻松的实现两个组件&#xff08;页面&#xff09;之间的切换&#xff0c;有个常用的设计就是需要在登录页登录后跳转至一个内容页&#xff0c;通常的做法是在登录校验完成之后立即切换路由至内容页&#xff0c;接着内容页发送网络请求…

极简生活|2024年让自己越来越好的18个极简好习惯

哈喽&#xff0c;你好啊&#xff0c;我是雷工&#xff01; 转眼间已经进入了2024年&#xff0c;新的一年&#xff0c;新的开始。 俗话说&#xff1a;百尺高台起于垒土&#xff0c;千里之堤毁于蚁穴。 好习惯积累的越多&#xff0c;坏习惯越来越少&#xff0c;我们的生活才能越…

Iterator对象功能学习

package config;import java.util.Iterator; import java.util.Properties; import java.util.Set;/*** 这个类演示了如何使用Properties类来存储和访问键值对。* Properties类继承自Hashtable&#xff0c;因此它可以用来存储键值对数据&#xff0c;且支持同步。*/ public clas…

MySQL介绍

一、MySQL数据库介绍 1、发展史 1996年 MySQL1.0 2008年1月16日 Sun公司收购了 MySQL 2009年4月20日 Oracle收购了Sun公司 MySQL是一种开放源代码的关系型数据库管理系统 使用最常用的数据库管理语言 SQL&#xff08;结构化查询语言&#xff09; MySQL是开放源代码的 因此所有…

基于Springboot的员工健康管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的员工健康管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构…

【c++】c++基本语法知识-命名空间-输入输出-缺省参数

主页&#xff1a;醋溜马桶圈-CSDN博客 专栏&#xff1a;c_醋溜马桶圈的博客-CSDN博客 gitee&#xff1a;mnxcc (mnxcc) - Gitee.com 目录 1.命名空间 1.2 命名空间定义 1.3 命名空间使用 命名空间的三种使用方式 2.C输入&输出 std命名空间的使用惯例 3.缺省参数 3…

Win11初始化系统遇一文解决

这个是目录 一、设置内的初始化无法使用时&#xff0c;使用以下工具二、将桌面移动到D盘三、解决win11桌面右键创建只有一个带盾牌的文件夹问题四、win11 系统停止更新五、office安装1、使用的是 Office Tool plus2、使用WPS 六、D盘有感叹号七、打开组策略编辑器(gpedit.msc)失…

【Docker】-- 如何安装docker

一、安装docker 首先要安装一个yum工具 yum install -y yum-utils 安装成功后&#xff0c;执行命令&#xff0c;配置Docker的yum源&#xff1a; yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 最后&#xff0c;执行命令&#x…