【教程】逻辑回归怎么做多分类

目录

一、逻辑回归模型介绍

1.1 逻辑回归模型简介

1.2 逻辑回归二分类模型

1.3 逻辑回归多分类模型

二、如何实现逻辑回归二分类

2.1 逻辑回归二分类例子

2.2 逻辑回归二分类实现代码

三、如何实现一个逻辑回归多分类

3.1 逻辑回归多分类问题

3.1 逻辑回归多分类的代码实现


 本文部分图文借鉴自《老饼讲解-机器学习》

一、逻辑回归模型介绍

1.1 逻辑回归模型简介

逻辑回归模型是一种广义的线性回归分析模型,常用于数据挖掘,疾病自动诊断,经济预测等领域。它与多重线性回归有很多相同之处,模型形式基本相同,都具有w'x+b,其中w和b是待求参数。重线性回归直接将w'x+b作为因变量即y =w'x+b,而逻辑回归则通过sigmiod函数将w'x+b对应一个概率P,

也就是说,线性回归用于数值预测问题,而逻辑回归则用于分类问题,逻辑回归输出的是属于类别的概率。逻辑回归的意义如下图所示,用直线/超平面将不同类别的数据样本进行划分:

逻辑回归可以用于做二分类(即只有两个类别),也可以做多分类(2个以上的类别)。二分类是逻辑回归的基本模型,而多分类则是二分类模型的拓展。

1.2 逻辑回归二分类模型

逻辑回归的二分类模型如下:

它的损失函数为最大似然损失函数:

模型中的参数W就是通过求解损失函数,令损失函数取最小值,从而求得W的最优解。模型的求解一般使用梯度下降法。

1.3 逻辑回归多分类模型

逻辑回归多分类模型是二分类模型的拓展。主要有softmax回归和OVR两种拓展方法,其中,OVR是基于二分类模型的一种通用拓展方法。两种方法的原理如下:

softmax回归:softmax回归是逻辑回归在多分类问题上的推广,通过修改逻辑回归的损失函数,将逻辑回归变为softmax回归。softmax回归会有相同于类别数的输出,输出的值为对于样本属于各个类别的概率,最后对于样本进行预测的类型为概率值最高的那个类别。
OVR(基于二分类的逻辑回归):根据每个类别都建立一个二分类器,本类别的样本标签定义为0,其它分类样本标签定义为1,则有多少个类别就构造多少个逻辑回归分类器。这种方法实际上是将多分类问题划分为多个二分类问题来解决。
上述两种方法都是常用的逻辑回归多分类方法,无论采用哪种方法,逻辑回归多分类模型都需要根据具体问题和数据集进行调整和优化,以获得更好的分类性能。

当为Softmax回归时,逻辑回归多分类的模型表达式如下:

当为OVR模型时,逻辑回归多分类的模型表达式如下

P_k(x)=\textbf{sigmoid}(WX)

其中,P_k代表属于k类的概率

二、如何实现逻辑回归二分类

2.1 逻辑回归二分类例子

在python中,可以使用sklearn的LogisticRegression实现一个逻辑回归的,例子如下

具体数据如下:
 


特征:平均平滑度、平均紧凑度、平均凹面、平均凹点,类别:0-恶性、1-良性
 即以sk-learn中的breast_cancer的数据,breast_cancer原数据中有30个特征,为方便讲解,我们这里只选4个。下面展示调用sklearn训练一个逻辑回归的DEMO代码
 

2.2 逻辑回归二分类实现代码

代码简介  :
1. 数据归一化(用sklearn的逻辑回归一般要作数据归一化)
2. 用归一化数据训练逻辑回归模型                                      
3. 用训练好的逻辑回归模型预测  

from sklearn.datasets import load_breast_cancer
from sklearn.linear_model import LogisticRegression
import numpy as np#----数据加载------
data = load_breast_cancer()
X    = data.data[:,4:8]  #这里我们只选择4个变量进行建模
y    = data.target
#----数据归一化------
xmin=X.min(axis=0)
xmax=X.max(axis=0)
X_norm=(X-xmin)/(xmax-xmin)#-----训练模型--------------------
clf = LogisticRegression(random_state=0)            
clf.fit(X_norm,y)#------模型预测-------------------------------
pred_y      = clf.predict(X_norm)              # 预测类别
pred_prob_y    = clf.predict_proba(X_norm)[:,1]   # 预测属于1类的概率print( "模型系数(对应归一化数据):",clf.coef_[0])
print( "模型阈值(对应归一化数据):",clf.intercept_)
print( "模型准确率:",(pred_y== y).sum()/len(y))

运行结果如下:

三、如何实现一个逻辑回归多分类

3.1 逻辑回归多分类问题

下面是一个简单的多分类问题
问题
现已采集150组 鸢尾花数据,
包括鸢尾花的四个特征与鸢尾花的类别
我们希望通过采集的数据,训练一个决策树模型
之后应用该模型,可以根据鸢尾花的四个特征去预测它的类别
数据      
数据如下(即sk-learn中的iris数据):
 

 
花萼长度 sepal length (cm) 、花萼宽度 sepal width (cm)    
花瓣长度 petal length (cm) 、花瓣宽度 petal width (cm)  
山鸢尾:0,杂色鸢尾:1,弗吉尼亚鸢尾:2                   

3.1 逻辑回归多分类的代码实现

用多类别逻辑回归解决该问题的具体思路如下
 1. 数据归一化(用sklearn的逻辑回归一般要作数据归一化)
2. 用归一化数据训练逻辑回归模型                                      
3. 用训练好的逻辑回归模型预测                                         
4. 模型参数提取     

# -*- coding: utf-8 -*-
"""
sklearn逻辑回归多分类例子(带模型公式提取)
"""
from sklearn.linear_model import LogisticRegression
import numpy as np
from sklearn.datasets import load_iris
#----数据加载------iris = load_iris()    
X    = iris.data
y    = iris.target
#----数据归一化------
xmin   = X.min(axis=0)
xmax   = X.max(axis=0)
X_norm = (X-xmin)/(xmax-xmin)#-----训练模型--------------------
clf = LogisticRegression(random_state=0,multi_class='multinomial')            
clf.fit(X_norm,y)#------模型预测-------------------------------
pred_y      = clf.predict(X_norm)
pred_prob_y    = clf.predict_proba(X_norm) #------------提取系数w与阈值b-----------------------
w_norm = clf.coef_                             # 模型系数(对应归一化数据)
b_norm = clf.intercept_                           # 模型阈值(对应归一化数据)
w    = w_norm/(xmax-xmin)                       # 模型系数(对应原始数据)
b    = b_norm -  (w_norm/(xmax - xmin)).dot(xmin)      # 模型阈值(对应原始数据)
# ------------用公式预测------------------------------
wxb = X.dot(w.T)+ b
wxb = wxb - wxb.sum(axis=1).reshape((-1, 1)) # 由于担心数值过大会溢出,对wxb作调整
self_prob_y = np.exp(wxb)/np.exp(wxb).sum(axis=1).reshape((-1, 1))
self_pred_y = self_prob_y.argmax(axis=1)#------------打印信息--------------------------
print("\n------模型参数-------")     
print( "模型系数:",w)
print( "模型阈值:",b)
print("\n-----验证准确性-------")  
print("提取公式计算的概率与sklearn自带预测概率的最大误差", abs(pred_prob_y-self_prob_y).max())

    运行结果如下:


如果觉得本文有帮助,点个赞吧!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用Rust刷LeetCode之66 加一

66. 加一[1] 难度: 简单 func plusOne(digits []int) []int { length : len(digits) // 从最低位开始遍历&#xff0c;逐位加一 for i : length - 1; i > 0; i-- { if digits[i] < 9 { digits[i] return digits } d…

经验分享|MySQL分区实战(RANGE)

概述 分区概述 在 MySQL 中&#xff0c; InnoDB存储引擎长期以来一直支持表空间的概念。在 MySQL 8.0 中&#xff0c;同一个分区表的所有分区必须使用相同的存储引擎。但是&#xff0c;也可以为同一 MySQL 服务器甚至同一数据库中的不同分区表使用不同的存储引擎。 通俗地讲…

家电制造数字孪生5G智能工厂可视化系统,加速家电制造产业数字化转型

5G数字孪生、三维可视化与工业互联网的融合加速中国新型工业化进程&#xff0c;助推我国从制造大国迈进制造强国。家电行业是中国最具国际竞争力的产业之一&#xff0c;在企业数字化转型中&#xff0c;要求企业从生产设备到数字化系统&#xff0c;一系列的数字化、智能化改革已…

Linux指令学习

目录 1.ls指令 2.pwd命令 3.cd 指令 4. touch指令 5.mkdir指令 6.rmdir指令 && rm 指令 7.man指令 8.cp指令 9.mv指令 10.cat指令 11.more指令 12.less指令 13.head指令 14.find指令&#xff1a; -name 15.grep指令 16.zip/unzip指令&#xff1a; 17.tar…

【ARM Trace32(劳特巴赫) 使用介绍 12 -- Trace32 常用命令之 d.dump | data.dump 介绍】

请阅读【ARM Coresight SoC-400/SoC-600 专栏导读】 文章目录 Trace32 常用命令之 d.dump | data.dump 介绍1 字节显示 (Byte)4 字节显示&#xff08;word&#xff09;8 字节显示&#xff08;通常long&#xff09;十进制显示显示指定列数显示地址范围内的值不经过MMUnon-cache …

TwinCAT3 Modbus-TCP Client/Server使用

目录 一、环境配置和准备 1、PLC中安装TF6250-Modbus-TCP库 2、勾选TF6250的license 3、PLC工程中添加Tc2_ModbusSrv库文件 4、分别创建测试ModbusTCP测试的Server和Client程序 二、PLC作为Client端 1、设置测试电脑IP地址 2、运行MobusTCP测试工具 3、PLC端程序编写 …

报错处理集

这个报错处理集的错误来源于编译arm平台的so文件产生的。但是后续可以补充成linux一个大的错误处理集。 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 第一次整理的时间是2023年12月8日10:05:59&#xff0c;以下错误来源于欧拉系统编译…

LoadBalancer将服务暴露到外部实现负载均衡Openelb-layer2模式配置介绍

目录 一.openelb简介 二.主要介绍layer2模式 1.简介 2.原理 3.部署 &#xff08;1&#xff09;先在集群master上开启kube-proxy的strictARP &#xff08;2&#xff09;应用下载openelb.yaml&#xff08;需要修改镜像地址&#xff09; &#xff08;3&#xff09;编写yam…

字节跳动面试挂在2面,复盘后,决定二战.....

先说下我基本情况&#xff0c;本科不是计算机专业&#xff0c;现在是学通信&#xff0c;然后做图像处理&#xff0c;可能面试官看我不是科班出身没有问太多计算机相关的问题&#xff0c;因为第一次找工作&#xff0c;字节的游戏专场又是最早开始的&#xff0c;就投递了&#xf…

dockerfile简单实践部署(jenkins,wordpress)

实现部署jenkins的流程 配置java环境&#xff0c;导入jenkins包&#xff0c;运行命令 java -jar jenkins包&#xff0c;这里为了减少进入jenkins的web端安装插件&#xff0c;将插件提前部署到容器内。 制作dockerfile 创建镜像所在的文件夹和Dockerfile文件 mkdir /test cd …

岳阳楼3D模型纹理贴图

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 岳阳楼&#xff0c;位于湖南省岳阳市岳阳楼区洞庭北路&#xff0c;地…

会声会影2024软件还包含了视频教学以及模板素材

会声会影2024中文版是一款加拿大公司Corel发布的视频编软件。会声会影2024官方版支持视频合并、剪辑、屏幕录制、光盘制作、添加特效、字幕和配音等功能&#xff0c;用户可以快速上手。会声会影2024软件还包含了视频教学以及模板素材&#xff0c;让用户剪辑视频更加的轻松。 会…

使用高防IP防护有哪些优势

高防IP是针对互联网服务器在遭受大流量的DDoS攻击后导致服务不可用的情况下&#xff0c;推出的付费增值服务&#xff0c;用户可以通过配置高防IP&#xff0c;将攻击流量引流到高防IP&#xff0c;确保源站的稳定可靠。高防IP相当于搭建完转发的服务器。 高防IP有两种接入方式&a…

CodeBlocks添加头文件,解决fatal error: ui.h No such file or directory

问题描述 在使用codeblocks工具进行LVGL仿真过程中报错&#xff0c;找不到头文件 原因分析&#xff1a; 没有将头文件加入编辑器搜索的目录中&#xff0c;编译时找不到头文件。 解决方案&#xff1a; 将要包含的头文件的目录加进去就可以了

kyuubi整合flink yarn application model

目录 概述配置flink 配置kyuubi 配置kyuubi-defaults.confkyuubi-env.shhive 验证启动kyuubibeeline 连接使用hive catalogsql测试 结束 概述 flink 版本 1.17.1、kyuubi 1.8.0、hive 3.1.3、paimon 0.5 整合过程中&#xff0c;需要注意对应的版本。 注意以上版本 姊妹篇 k…

06、pytest将多个测试放在一个类中

官方用例 # content of test_class.py # 实例1 class TestClass:def test_one(self):x "this"assert "h" in xdef test_two(self):x "hello"assert hasattr(x,"check")# content of test_class_demo.py # 每个测试都有唯一的类实例…

GaussDB数据库语法及gsql入门

一、GaussDB数据库语法入门 之前我们讲了如何连接数据库实例&#xff0c;那连接数据库后如何使用数据库呢&#xff1f;那么我们今天就带大家了解一下GaussDB&#xff0c;以下简称GaussDB的基本语法。 关于如何连接数据库&#xff0c;请戳这里。 学习本节课程之后&#xff0c…

python画立体玫瑰图

1.源代码 from matplotlib import cm import matplotlib.pyplot as plt import numpy as npfig plt.figure()#显示绘图窗口 ax fig.add_subplot(projection 3d)#绘图窗口设置 [x, t] np.meshgrid(np.array(range(25))/24.0, np.arange(0, 575.5, 0.5)/575*17*np.pi-2*np.pi…

玩转代码|组件封装之Slots、Emit和Props穿透

目录 背景 准备工作 Slots穿透方案-单子组件 Slots穿透方案-多子组件 Props和Emit穿透方案-单子组件 Props和Emit穿透方案-多子组件 最后 背景 组内多人共同开发时免不了基于某UI库二次封装组件来适应项目业务场景的情况&#xff0c;但不知道大家有没有遇到过需要兼容部…

伦茨科技宣布ST17H6x芯片已通过Apple Find My「查找」认证

深圳市伦茨科技有限公司&#xff08;以下简称“伦茨科技”&#xff09;发布ST17H6x Soc平台。成为继Nordic之后全球第二家取得Apple Find My「查找」认证的芯片厂家&#xff0c;该平台提供可通过Apple Find My认证的Apple查找&#xff08;Find My&#xff09;功能集成解决方案。…