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

机器学习算法(六)---逻辑回归

常见的十大机器学习算法:
机器学习算法(一)—决策树
机器学习算法(二)—支持向量机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…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...

Unity UGUI Button事件流程

场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...

【LeetCode】算法详解#6 ---除自身以外数组的乘积

1.题目介绍 给定一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O…...

【Kafka】Kafka从入门到实战:构建高吞吐量分布式消息系统

Kafka从入门到实战:构建高吞吐量分布式消息系统 一、Kafka概述 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,后成为Apache顶级项目。它被设计用于高吞吐量、低延迟的消息处理,能够处理来自多个生产者的海量数据,并将这些数据实时传递给消费者。 Kafka核心特…...

医疗AI模型可解释性编程研究:基于SHAP、LIME与Anchor

1 医疗树模型与可解释人工智能基础 医疗领域的人工智能应用正迅速从理论研究转向临床实践,在这一过程中,模型可解释性已成为确保AI系统被医疗专业人员接受和信任的关键因素。基于树模型的集成算法(如RandomForest、XGBoost、LightGBM)因其卓越的预测性能和相对良好的解释性…...

Linux基础开发工具——vim工具

文章目录 vim工具什么是vimvim的多模式和使用vim的基础模式vim的三种基础模式三种模式的初步了解 常用模式的详细讲解插入模式命令模式模式转化光标的移动文本的编辑 底行模式替换模式视图模式总结 使用vim的小技巧vim的配置(了解) vim工具 本文章仍然是继续讲解Linux系统下的…...