机器学习 | 掌握逻辑回归在实践中的应用

news2024/12/23 14:31:58

目录

初识逻辑回归

逻辑回归实操

分类评估方法


初识逻辑回归

逻辑回归(LogisticRegression)是机器学习中的一种分类模型,逻辑回归是一种分类算法,虽然名字中带有回归,但是它与回归之间有一定的联系。由于算法的简单和高效,在实际中应用非常广泛。

逻辑回归就是解决二分类问题的利器,以下是逻辑回归的应用场景:

1)广告点击率 2)是否为垃圾邮件 3)是否患病  4)金融诈骗 5 )虚假账号

逻辑回归原理:逻辑回归是一种常用于解决二分类问题的统计学习方法。它的原理基于以下几个关键概念:

假设函数:逻辑回归的输入值就是一个线性回归的结果:

Sigmoid 函数:sigmoid 函数是一种常用的激活函数,它将任意实数映射到 (0, 1) 的区间内。它的定义如下:

回归的结果输入到sigmoid函数当中,其输出结果:[0,1]区间中的一个概率值,默认为0.5为阈值

逻辑回归最终的分类是通过属于某个类别的概率值来判断是否属于某个类别,并且这个类别默认标记为1(正例),另外的一个类别会标记为0(反例)。 (方便损失计算)

输出结果解释(重要):假设有两个类别A,B,并且假设我们的概率值为属于A(1)这个类别的概率值。现在有一个样本的输入到逻辑回归输出结果0.55,那么这个概率值超过0.5,意味着我们训练或者预测的结果就是A(1)类别。那么反之,如果得出结果为0.3那么,训练或者预测结果就为B(0)类别。

关于逻辑回归的阈值是可以进行改变的,比如上面举例中,如果你把阈值设置为0.6,那么输出的结果0.55,就属于B类。

损失函数:逻辑回归使用最大似然估计来确定模型的参数。为了最大化似然函数,通常采用对数似然损失函数(log-likelihood loss),逻辑回归的损失,称之为对数似然损失,公式如下:

其中y为真实值,hθ(x)为预测值。

无论何时,我们都希望损失函数值,越小越好。分情况讨论,对应的损失函数值:

接下来我们进行举例:

接下来我们呢就带入上面那个例子来计算一遍,就能理解意义了:

逻辑回归实操

接下来通过肿瘤预测案例,学会如何使用逻辑回归对模型进行训练,原始数据的下载地址大家可以参考:网址 ,里面有众多数据集供大家训练,大家根据自身情况进行选择:

本次使用的数据集描述:

1)699条样本,共11列数据,第一列用语检索的id,后9列分别是与肿瘤相关的医学特征,最后一列表示肿瘤类型的数值。

2)包含16个缺失值,用"?"标出。

下面这段代码是一个使用逻辑回归进行二分类问题预测的示例:

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression

# 获取数据
names = ['Sample code number', 'Clump Thickness', 'Uniformity of Cell Size', 'Uniformity of Cell Shape',
         'Marginal Adhesion', 'Single Epithelial Cell Size', 'Bare Nuclei', 'Bland Chromatin',
         'Normal Nucleoli', 'Mitoses', 'class']
data = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data", names=names)

# 基本数据处理
data = data.replace(to_replace="?", value=np.nan) # 缺失值处理
data = data.dropna()

x = data.iloc[:, 1: -1] # 确定特征值
y = data["class"] # 确定目标值
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=22) # 分割数据

# 特征工程标准化
transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)
x_test = transfer.fit_transform(x_test)

# 机器学习(逻辑回归)
estimator = LogisticRegression()
estimator.fit(x_train, y_train)

# 模型评估
ret = estimator.score(x_test, y_test) # 准确率
print("准确率为: \n", ret)
y_pre = estimator.predict(x_test) # 预测值
print("预测值为: \n", y_pre)

它主要涉及到数据获取、基本数据处理、数据集划分、特征工程标准化、机器学习(逻辑回归)和模型评估等步骤。通过这个示例,可以学习到如何使用逻辑回归模型进行二分类问题的预测。 

分类评估方法

在逻辑回归中,分类评估方法是用来评估模型在分类问题中的性能和准确度的一种方法。在分类任务下,预测结果(PredictedCondition)与正确标记(TrueCondition)之间存在四种不同的组合,构成混淆矩阵(适用于多分类):

以下是一些常见的分类评估方法:

精确率:表示模型预测为正例的样本中真正为正例的比例,即在所有预测为正例的样本中,有多少是真正的正例。精确率可以用来评估模型的预测结果中的假阳性率。

召回率:表示模型成功预测为正例的样本占所有实际正例的比例,即在所有实际为正例的样本中,有多少被成功预测为正例。召回率可以用来评估模型的预测结果中的假阴性率。

接下来我们对上文的案例进行一个精确率与召回率的测试,导入如下库:

from sklearn.metrics import classification_report

然后我们测试精确率与召回率:

最终得到的结果如下:

F1 分数(F1-Score):F1 分数是精确率和召回率的调和平均值,它综合考虑了精确率和召回率的性能指标。F1 分数越高,说明模型的综合性能越好。 

ROC 曲线和 AUC:ROC 曲线(Receiver Operating Characteristic Curve)是以真正例率(True Positive Rate,TPR)为纵轴,假正例率(False Positive Rate,FPR)为横轴绘制的曲线。ROC 曲线可以用来评估二分类模型在不同阈值下的性能表现。AUC(Area Under the Curve)是 ROC 曲线下的面积,用来衡量模型分类性能的一个综合指标。AUC 值越大,说明模型的分类性能越好。

ROC曲线的横轴就是FPRate,纵轴就是TPRate,当二者相等时,表示的意义则是:对于不论真实类别是1还是0的样本,分类器预测为1的概率是相等的,此时AUC为0.5

AUC指标

1)AUC的概率意义是随机取一对正负样本,正样本得分大于负样本得分的概率

2)AUC的范围在[0,1]之间,并且越接近1越好,越接近0.5属于乱猜

3)AUC=1,完美分类器,采用这个预测模型时,不管设定什么阈值都能得出完美预测。绝大多数预测的场合,不存在完美分类器。

4)0.5<AUC<1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值。

我们在上一个案例中导入如下第三方库进行auc计算:

from sklearn.metrics import roc_auc_score

最终打印的结果如下:

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

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

相关文章

搭建网站详细教程

一.领取一个免费域名和SSL证书&&CDN 特点&#xff1a;支持Cloudflare CDN Cloudflare是全球知名的CDN提供商&#xff0c;如果你不想暴露你的源站&#xff0c;又想使用我们的二级域名&#xff0c;不需要前往Cloudflare添加域名&#xff0c;修改NS记录&#xff0c;现在…

Redux状态管理(运行机制及实例)

背景&#xff1a; JavaScript需要管理的状态越来越多&#xff0c;越来越复杂;这些状态包括服务器返回的数据、缓存数据、用户操作产生的数据等等&#xff0c;也包括一些UI的状态&#xff0c;比如某些元素是否被选中&#xff0c;是否显示加载动效&#xff0c;当前分页。 状态之…

prometheus的alertmanager监控报警

监控告警&#xff1a; alert是一个单独的模块&#xff0c;需要我们单独的配置。 需要声明一个邮箱地址。配置是以configmap进行部署。 alert 实验&#xff1a; vim alert-cfg.yaml apiVersion: v1 kind: ConfigMap metadata:name: alertmanagernamespace: monitor-sa data…

【Spring Boot 源码学习】BootstrapRegistry 详解

《Spring Boot 源码学习系列》 BootstrapRegistry 详解 一、引言二、往期内容三、主要内容3.1 源码初识3.2 register 方法3.3 registerIfAbsent 方法3.4 isRegistered 方法3.5 getRegisteredInstanceSupplier 方法3.6 addCloseListener 方法3.7 InstanceSupplier 内部接口类3.7…

༺༽༾ཊ—Unity之-01-工厂方法模式—ཏ༿༼༻

首先创建一个项目&#xff0c; 在这个初始界面我们需要做一些准备工作&#xff0c; 建基础通用文件夹&#xff0c; 创建一个Plane 重置后 缩放100倍 加一个颜色&#xff0c; 任务&#xff1a;使用工厂方法模式 创建 飞船模型&#xff0c; 首先资源商店下载飞船模型&#xff0c…

2024-01-06-AI 大模型全栈工程师 - 机器学习基础

摘要 2024-01-06 阴 杭州 晴 本节简介: a. 数学模型&算法名词相关概念; b. 学会数学建模相关知识&#xff1b; c. 学会自我思考&#xff0c;提升认知&#xff0c;不要只会模仿&#xff1b; 课程内容 1. Fine-Tuning 有什么作用&#xff1f; a. 什么是模型训练&#xff…

springboot144基于mvc的高校办公室行政事务管理系统设计与实现

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

VMware虚拟机安装统信uos桌面专业版操作系统系统

统信uos桌面版版本对比:https://www.uniontech.com/next/product/desktop-contrast专业版只要是面向政企等单位,这里只是用虚拟机安装测试基本功能使用,对于我们个人要长期使用的话可以使用家庭版或者社区版 1镜像下载 1.1打开官网 镜像在统信生态社区下载统信生态社区官网:…

C#,洛布数(Lobb Number)的计算方法与源代码

1 洛布数&#xff08;Lobb Number&#xff09; 在组合数学中&#xff0c;洛布数&#xff08;Lobb Number&#xff09;L(m&#xff0c;n)计算nm开括号的排列方式&#xff0c;以形成一个有效的平衡括号序列的开始。 Lobb数由两个非负整数m和n参数化&#xff0c;其中n>m>0。…

【金蝶BI方案】用一张报表,分析生产完成情况

当老板问生产完成地怎样&#xff1f;难道还能拿出一叠报表让老板逐个细看&#xff1f;奥威-金蝶BI方案只用一张BI数据可视化报表就把整个生产完成情况给讲明白了。甚至还能满足老板想从不同角度进行分析的需求。 奥威-金蝶BI方案-BI生产完成情况报表 这张报表总结计算了生产合…

微软新的内部开发部门发现了第一个 Windows 12 版本

Windows 11 被证明让很多人有点失望&#xff0c;很多 Windows 10 用户认为没有理由升级。 这意味着有大量用户渴望一些大而令人印象深刻的东西——而这正是 Windows 12 所希望的。 无论您是 Windows 10 的忠实拥趸&#xff0c;还是渴望更新、更闪亮的 Windows 11 采用者&#x…

工具方法 - 找富婆包养的必胜法则

【标准的问题解决方法&#xff0c;以及作业标准与标准作业】 第一步: 明确问题 你的人生轨迹是&#xff1a; 你要解决的问题是&#xff0c;找到自己的爱人。 而立之年&#xff0c;恋爱结婚已成为一大任务&#xff01; 第二步&#xff1a;了解现状 我们在做计划之前必须进行一…

vit细粒度图像分类(七)TBNet学习笔记

1.摘要 细粒度鸟类图像识别致力于实现鸟类图像的准确分类&#xff0c;是机器人视觉跟踪中的一项基础性工作。鉴于濒危鸟类的监测和保护对保护濒危鸟类具有重要意义&#xff0c;需要采用自动化方法来促进鸟类的监测。在这项工作中&#xff0c;我们提出了一种新的基于机器人视觉…

Qt读写Execl:QXlsx库

Qt三方库开发技术&#xff1a;QXlsx介绍、编译和使用 我自己记录的实例代码&#xff1a;https://download.csdn.net/download/cao_jie_xin/88795216 目录 一、概述二、下载三、编译四、加载QXlsx静态库五、介绍一些常用的功能1、一些头文件和命名空间2、创建一个excel文件3、…

二进制安全虚拟机Protostar靶场(5)堆的简单介绍以及实战 heap0

前言 这是一个系列文章&#xff0c;之前已经介绍过一些二进制安全的基础知识&#xff0c;这里就不过多重复提及&#xff0c;不熟悉的同学可以去看看我之前写的文章 什么是堆 堆是动态内存分配的区域&#xff0c;程序在运行时用来分配内存。它与栈不同&#xff0c;栈用于静态…

外包干了8个月,技术退步明显...

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入武汉某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…

2023安防行业十件大事,一定有你关心的

2023年对我国安防行业来说&#xff0c;可以说是既充满希望又充满不确定性的一年。经历三年的市场低迷&#xff0c;2023年安防市场开始逐渐回暖&#xff0c;行业景气度缓慢上升。 那么&#xff0c;2023年我国安防行业都发生了哪些值得铭记的大事&#xff1f;哪些事件对安防产业…

手把手教测试,全网内容最全最深-jmeter-Throughput Controller(吞吐量控制器)

5.1.6.15.Throughput Controller(吞吐量控制器) 用来控制后代组件的执行的次数。有两种模式&#xff1a;百分比和次数&#xff1b;不会影响取样器的 TPS&#xff0c;只影响执行次数。 1.按照次数执行&#xff1a; 1).勾选Per User&#xff1a; 2).不勾选Per User&#xff1a…

Skywalking trace UI页面中字段信息详解,包括端点、跨度类型和Peer

刚上手Skywalking的同学可能对 trace UI 页面信息中的字段信息不是很了解&#xff0c;在这里就给大家一一讲解&#xff0c;重点关注端点、跨度类型和Peer 服务 :服务的名称 实例&#xff1a;服务对应的实例 端点&#xff1a;端点(Endpoint) 对于特定服务所接收的请求路径, 如…

Wampserver 切换中文时无法启动报错处理

在使用 Wampserver 软件时默认为英语&#xff0c;可以看到有语言选择功能&#xff0c;切换其他语言。但选择中文切换后&#xff0c;软件重启时报如下错误&#xff1a; The configuration file contains a systax error on line 44:[EParseError] Mismatched or misplaced quoue…