机器学习算法(六)---逻辑回归
常见的十大机器学习算法:
机器学习算法(一)—决策树
机器学习算法(二)—支持向量机SVM
机器学习算法(三)—K近邻
机器学习算法(四)—集成算法
机器学习算法(五)—聚类
机器学习算法(六)—逻辑回归
机器学习算法(七)—Apriori 关联分析
机器学习中监督学习模型的任务重点在于根据已有经验知识对未知样本的目标/标记进行预测。根据目标预测变量的类型不同,把监督学习任务大体分为分类学习和回归预测两类。分类学习是最为常见的监督学习问题,其中,最基础的是二分类问题,除此之外还有多分类问题。
一、逻辑回归
1.1 模型介绍
逻辑回归是在数据服从伯努利分布的假设下,通过极大似然的方法,运用梯度下降法来求解参数,从而达到将数据二分类的目的。
逻辑回归是一种用于二分类问题的统计方法,引入了一种 S型曲线(Sigmoid函数),它能将输出值压缩到0和1之间,从而解决了线性回归不适用分类问题的问题。
Sigmoid函数:

其中,Z=w0+w1x1+w2x2+…+(wn)xn=W*X,逻辑回归可以将 z 映射为一个 0 到 1 之间的概率。X表示特征向量,W表示模型的参数。

1.2 工作原理
逻辑回归主要用于估计某个事件发生的概率,核心思想是使用线性回归来计算一个分数(即Z ),然后通过 Sigmoid函数将这个分数转化为概率,再以此概率进行分类。逻辑回归的参数是通过极大似然估计来确定。

(1)损失函数
使用交叉熵损失函数来衡量模型预测的概率与真实类别标签之间的差距。交叉熵损失定义如下:

其中,yi是真实类别,pi是模型的预测概率,m 是样本数量。
(2)优化算法
使用梯度下降法来更新权重和偏置项,以最小化损失函数。
1.3 算法流程
1、初始化
设定初始参数 W,可以随机选择,也可以设为零。
2、前向传播
对每一个样本计算线性组合,应用逻辑回归函数计算概率
3、计算损失
使用对数似然函数计算损失
4、梯度计算
计算梯度
5、参数更新
更新参数
6、迭代
重复前向传播、损失计算、梯度计算和参数更新,直到收敛或达到预设的迭代次数。
7、分类决策
使用训练好的模型对新数据进行预测,根据计算出的概率 p 和阈值进行分类。
1.4 逻辑回归优缺点
优点:
- 1.形式简单,模型的可解释性好
- 2.训练速度较快
- 3.方便调整输出结果,通过调整阈值的方式
缺点:
- 1.无法自动进行特征筛选
- 2.只能处理二分类问题
- 3.很难处理数据不平衡问题
1.5 案例
案例数据为‘良/恶性乳腺肿瘤预测数据’,该数据共有569条样本,1列表征肿瘤类型的数值,以及30列与肿瘤相关的医学特征(30个特征(10个平均值,10个标准差,10个最值))。

import pandas as pd
import numpy as np
from sklearn.datasets import load_breast_cancer #引入乳腺癌的数据集
from sklearn.model_selection import train_test_split #用于分割数据集
from sklearn.preprocessing import StandardScaler # 归一化
from sklearn.linear_model import LogisticRegression # 导入逻辑回归模型
from sklearn.linear_model import SGDClassifier #导入随机梯度下降分类模型
from sklearn.metrics import classification_report
cancer = load_breast_cancer()
print(cancer.data.shape)
print(cancer.target.shape)

x=cancer.data
y=cancer.target
x

y

x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.3,random_state=33)
#标准化数据,使得每个维度特征数据方差为1,均值为0,预测结果不会被某些维度过大的特征值而主导
ss=StandardScaler()
X_train=ss.fit_transform(x_train)
X_test=ss.transform(x_test)
#初始化
lr=LogisticRegression()
sgdc=SGDClassifier()
#调用LogisticRegression中fit函数/模块训练参数
lr.fit(X_train,y_train)
#使用训练好的模型lr对x_test数据进行预测
lr_y_predict=lr.predict(X_test)#调用SGDClassifier中fit函数/模块训练参数
sgdc.fit(X_train,y_train)
#使用训练好的模型lr对x_test数据进行预测
sgdc_y_predict=sgdc.predict(X_test)#对于乳腺癌肿瘤预测问题,显然更加关注召回率和精确率更加接近的模型给予更高的分数。
print('Accuracy of LR Classifier:',lr.score(X_test,y_test))
print(classification_report(y_test,lr_y_predict,target_names=['Benign','Malignant']))
#Benign:良性 Malignant:恶性
#macro avg 即宏均值,可理解为普通的平均值。对应的概念还有微均值 micro avg
#weighted avg 加权平均

print('Accuracy of sgdc Classifier:',sgdc.score(X_test,y_test))
print(classification_report(y_test,sgdc_y_predict,target_names=['Benign','Malignant']))

macro avg 即宏均值,可理解为普通的平均值。对应的概念还有微均值 micro avg
宏平均是先对每一个类统计指标值,然后在对所有类求算术平均值。微平均是对每一个实例不分类别进行统计建立全局混淆矩阵,然后计算相应指标。
如果每个class的样本数量相差不大,那么宏平均和微平均差异也不大,如果每个class的相差较大并且你想:更注重样本量多的class:使用宏平均;更注重样本量少的class:使用微平均。
LogisticRegression比起SGDClassifier在测试集上表现有更高的准确性,一般而言,对于训练数据规模在10万以上的数据,推荐使用随机梯度算法对模型参数进行估计。
1.6 classification_report()参数
classification_report(y_true,y_pred,labels=None,target_names=None,sample_weight=None,digits=2,output_dict=False,zero_division=“warn”)
y_true:真实值
y_pred:预测值
labels:标签索引列表,可选参数,数组形式
target_names:与标签匹配的名称,可选参数,数组形式
sample_weight:样本权重,当“output_dict”为“True”时,这将被忽略,并且返回的值不会四舍五入。
digits:格式化输出浮点值的位数。默认为2,是否输出字典。默认为False,如果为True则输出结果形式为字典。
zero_division:设置存在零除法时返回的值。默认为warn。如果设置为“warn”,这相当于0,但也会引发警告。
二、逻辑回归与线性回归的区别与联系
-
1.分类与回归:
线性回归模型是预测一个连续变量
逻辑回归是预测一个分类变量 -
2.输出:
线性回归 连续型 线性回归容易受异常值影响
逻辑回归 分类型 -
3.参数估计方法
线性回归使用的是最小平方误差损失函数,对偏离真实值越远的数据惩罚越严重
逻辑回归使用似然函数进行参数估计,使用交叉熵作为损失函数
相关文章:
机器学习算法(六)---逻辑回归
常见的十大机器学习算法: 机器学习算法(一)—决策树 机器学习算法(二)—支持向量机SVM 机器学习算法(三)—K近邻 机器学习算法(四)—集成算法 机器学习算法(五…...
计算机科学中的主要协议
1、主要应用层协议: HTTP、FTP、SMTP、POP、IMAP、DNS、TELNET和SSH等 应用层协议的主要功能是支持网络应用,定义了不同应用程序之间的通信规则。它们负责将用户操作转换为网络可以理解的数据格式,并通过传输层进行传输。应用层协议直接与用…...
下载maven 3.6.3并校验文件做md5或SHA512校验
一、下载Apache Maven 3.6.3 Apache Maven 3.6.3 官方下载链接: 二进制压缩包(推荐): ZIP格式: https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.zipTAR.GZ格式: https://archive.apache.org/dist/…...
【Android】View工作原理
View 是Android在视觉上的呈现在界面上Android提供了一套GUI库,里面有很多控件,但是很多时候我们并不满足于系统提供的控件,因为这样就意味这应用界面的同类化比较严重。那么怎么才能做出与众不同的效果呢?答案是自定义View&#…...
TIE算法具体求解-为什么是泊松方程和傅里叶变换
二维泊松方程的通俗理解 二维泊松方程 是偏微分方程的一种形式,通常用于描述空间中某个标量场(如位相场、电势场)的分布规律。其一般形式为: ∇ 2 ϕ ( x , y ) f ( x , y ) \nabla^2 \phi(x, y) f(x, y) ∇2ϕ(x,y)f(x,y) 其…...
postman中获取随机数、唯一ID、时间日期(包括当前日期增减)截取指定位数的字符等
在Postman中,您可以使用内置的动态变量和编写脚本的方式来获取随机数、唯一ID、时间日期以及截取指定位数的字符。以下是具体的操作方法: 一、postman中获取随机数、唯一ID、时间日期(包括当前日期增减)截取指定位数的字符等 获取…...
【计算机网络】实验3:集线器和交换器的区别及交换器的自学习算法
实验 3:集线器和交换器的区别及交换器的自学习算法 一、 实验目的 加深对集线器和交换器的区别的理解。 了解交换器的自学习算法。 二、 实验环境 • Cisco Packet Tracer 模拟器 三、 实验内容 1、熟悉集线器和交换器的区别 (1) 第一步:构建网络…...
flink学习(14)—— 双流join
概述 Join:内连接 CoGroup:内连接,左连接,右连接 Interval Join:点对面 Join 1、Join 将有相同 Key 并且位于同一窗口中的两条流的元素进行关联。 2、Join 可以支持处理时间(processing time)和事件时…...
HTTP协议详解:从HTTP/1.0到HTTP/3的演变与优化
深入浅出:从头到尾全面解析HTTP协议 一、HTTP协议概述 1.1 HTTP协议简介 HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网上应用最广泛的通信协议之一。它用于客户端与服务器之间的数据传输,尤其是在Web…...
张量并行和流水线并行在Transformer中的具体部位
目录 张量并行和流水线并行在Transformer中的具体部位 一、张量并行 二、流水线并行 张量并行和流水线并行在Transformer中的具体部位 张量并行和流水线并行是Transformer模型中用于提高训练效率的两种并行策略。它们分别作用于模型的不同部位,以下是对这两种并行的具体说…...
WEB开发: 丢掉包袱,拥抱ASP.NET CORE!
今天的 Web 开发可以说进入了一个全新的时代,前后端分离、云原生、微服务等等一系列现代技术架构应运而生。在这个背景下,作为开发者,你一定希望找到一个高效、灵活、易于扩展且具有良好性能的框架。那么,ASP.NET Core 显然是一个…...
【论文阅读】Federated learning backdoor attack detection with persistence diagram
目的:检测联邦学习环境下,上传上来的模型是不是恶意的。 1、将一个模型转换为|L|个PD,(其中|L|为层数) 如何将每一层转换成一个PD? 为了评估第𝑗层的激活值,我们需要𝑐个输入来获…...
Gooxi Eagle Stream 2U双路通用服务器:性能强劲 灵活扩展 稳定易用
人工智能的高速发展开启了飞轮效应,实施数字化变革成为了企业的一道“抢答题”和“必答题”,而数据已成为现代企业的命脉。以HPC和AI为代表的新业务就像节节攀高的树梢,象征着业务创新和企业成长。但在树梢之下,真正让企业保持成长…...
【计算机网络】实验2:总线型以太网的特性
实验 2:总线型以太网的特性 一、 实验目的 加深对MAC地址,IP地址,ARP协议的理解。 了解总线型以太网的特性(广播,竞争总线,冲突)。 二、 实验环境 • Cisco Packet Tracer 模拟器 三、 实…...
如何在Spark中使用gbdt模型分布式预测
这目录 1 训练gbdt模型2 第三方包python环境打包3 Spark中使用gbdt模型3.1 spark配置文件3.2 主函数main.py 4 spark任务提交 1 训练gbdt模型 我们可以基于lightgbm快速的训练一个gbdt模型,训练相对比较简单,只要把训练样本处理好,几行代码可…...
Qt-5.14.2 example
官方历程很丰富,modbus、串口、chart图表、3D、视频 共享方便使用 Building and Running an Example You can test that your Qt installation is successful by opening an existing example application project. To run an example application on an Android …...
virtualbox给Ubuntu22创建共享文件夹
1.在windows上的操作,创建共享文件夹Share 2.Ubuntu22上的操作,创建共享文件夹LinuxShare 3.在virtualbox虚拟机设置里,设置共享文件夹 共享文件夹路径:选择Windows系统中你需要共享的文件夹 共享文件夹名称:挂载至wi…...
GPT打字机效果—— fetchEventSouce进行sse流式请求
EventStream基本用法 与 WebSocket 不同的是,服务器发送事件是单向的。数据消息只能从服务端到发送到客户端(如用户的浏览器)。这使其成为不需要从客户端往服务器发送消息的情况下的最佳选择。 const evtSource new EventSource(“/api/v1/…...
SpringBoot 在线家具商城:设计考量与实现细节聚焦
第4章 系统设计 市面上设计比较好的系统都有一个共同特征,就是主题鲜明突出。通过对页面简洁清晰的布局,让页面的内容,包括文字语言,或者视频图片等元素可以清晰表达出系统的主题。让来访用户无需花费过多精力和时间找寻需要的内容…...
每日速记10道java面试题07
其他资料: 每日速记10道java面试题01-CSDN博客 每日速记10道java面试题02-CSDN博客 每日速记10道java面试题03-CSDN博客 每日速记10道java面试题04-CSDN博客 每日速记10道java面试题05-CSDN博客 每日速记10道java面试题06-CSDN博客 目录 1.线程的生命周期在j…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...
佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...
AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...
django blank 与 null的区别
1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是,要注意以下几点: Django的表单验证与null无关:null参数控制的是数据库层面字段是否可以为NULL,而blank参数控制的是Django表单验证时字…...
stm32wle5 lpuart DMA数据不接收
配置波特率9600时,需要使用外部低速晶振...
UE5 音效系统
一.音效管理 音乐一般都是WAV,创建一个背景音乐类SoudClass,一个音效类SoundClass。所有的音乐都分为这两个类。再创建一个总音乐类,将上述两个作为它的子类。 接着我们创建一个音乐混合类SoundMix,将上述三个类翻入其中,通过它管理每个音乐…...
