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

目录

初识逻辑回归

逻辑回归实操

分类评估方法


初识逻辑回归

逻辑回归(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

最终打印的结果如下:

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

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

相关文章

tui-datetime组件由弹窗显示改成页面直接展示

效果图 代码 <template><view class"tui-datetime-picker" :style"{zIndex}"><view class"tui-datetime__header" :class"{ tui-show: isShow }" :style"{zIndex:getPickerZIndex}"><view class&quo…

论文阅读-一个用于云计算中自我优化的通用工作负载预测框架,

论文标题&#xff1a;A Self-Optimized Generic Workload Prediction Framework for Cloud Computing 概述 准确地预测未来的工作负载&#xff0c;如作业到达率和用户请求率&#xff0c;对于云计算中的资源管理和弹性非常关键。然而&#xff0c;设计一个通用的工作负载预测器…

spring-boot-admin的介绍和使用

概述 Spring Boot 有一个非常好用的监控和管理的源软件&#xff0c;这个软件就是 Spring Boot Admin。该软件能够将 Actuator 中的信息进行界面化的展示&#xff0c;也可以监控所有 Spring Boot 应用的健康状况&#xff0c;提供实时警报功能。 主要的功能点有&#xff1a; 显…

springboot集成rocketmq-spring-boot-starter的坑(避坑指南)

1.说明版本&#xff08;解决方法&#xff09; springboot版本&#xff1a;2.2.2.RELEASE RocketMQ版本&#xff1a;rocketmq-spring-boot-starter 2.2.2 2.坑 rocketmq-spring-boot-starter的版本一开始&#xff0c;使用的是2.2.0版本&#xff0c;一直出现一个问题&#x…

leetcode刷题(剑指offer) 101.对称二叉树

101.对称二叉树 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true示例 2&#xff1a; 输入&#xff1a;root [1,2,2,null,3,null,3] 输出&#xff1a;false提示&#xff1a; …

探究HMAC算法:消息认证与数据完整性的完美结合

Hash-based Message Authentication Code&#xff08;基于哈希的消息认证码&#xff0c;简称HMAC&#xff09;算法作为一种广泛应用的消息认证码&#xff08;MAC&#xff09;算法&#xff0c;在现代信息安全领域起着至关重要的作用。本文将从算法原理、优缺点、实际应用等方面&…

RS485自动收发电路震荡的问题

电路 设计初衷 电源5V 选择5V的原因&#xff0c;差分2.5V比1.5V可以提高传输能力 TTL输入 3.3V电平满足需求 TTL输出 4.5V了&#xff0c;MCU是3.3V平台 这样就分为两种情况 MCU接收端可以容忍5V输入 MCU接收端不可以容忍5V输入&#xff0c;就要进行电压转换&#xff0c;我这里使…

VS之调用程序对DLL中全局变量的使用

接上篇《VS生成C动态链接库DLL》&#xff0c;能够生成DLL&#xff0c;且能调用后&#xff0c;遇到一个问题&#xff0c;即在DLL程序中定义了一些全局变量&#xff0c;应用程序需要使用&#xff0c;本以为可以直接使用&#xff0c;没想到&#xff0c;还是需要设置才可以&#xf…

Zookeeper服务注册与发现实战

目录 设计思路 Zookeeper注册中心的优缺点 SpringCloudZookeeper实现微服务注册中心 第一步&#xff1a;在父pom文件中指定Spring Cloud版本 第二步&#xff1a;微服务pom文件中引入Spring Cloud Zookeeper注册中心依赖 第三步&#xff1a; 微服务配置文件application.y…

猫什么时候发腮?全猫适用发腮长肉的生骨肉冻干分享

猫什么时候发腮是猫父母们非常关心的问题。在猫咪的成长过程中&#xff0c;发腮是一项重要的体征&#xff0c;也是猫咪成熟的标志。想要让猫咪拥有可爱的肉嘟嘟脸型&#xff0c;主人需要在适龄的年龄段加强营养补给&#xff0c;不要错失最佳发腮期。那么&#xff0c;猫咪的最佳…

前端性能优化:Vue项目打包后app.xxx.js 和 chunk-vendors.xxx.js 文件太大,导致页面加载时间太长

问题场景&#xff0c;如下图&#xff0c;环境上的 app.js 和chunk-vendors.js 两个文件大小&#xff0c;高达3.4M 和 2M &#xff0c;加载所耗费的时间也很长。 下面说一下如何解决&#xff1a; 1、首先需要安装插件 compression-webpack-plugin&#xff0c;我这里用的是6.1.1…

牛客——丢手绢(尺取法)

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 题目描述 “丢~丢~丢手绢&#xff0c;轻轻地放在小朋友的后面&#xff0c;大家不要告诉她&#xff0c;快点快点抓住她&#xff0c;快点快点抓住她。” 牛客幼儿园的小朋友们围成了一个圆圈准…

02.PostgreSQL运算符

1. 算术运算符 算术运算符 描述 示例 + 加法运算符 SELECT A+B - 减法运算符 SELECT A-B * 乘法运算符 SELECT A*B / 除法运算符 SELECT A/B % 取余运算符 SELECT A%B 1.1 加法与减法操作符 SELECT 100,100+11,100-11,100+23.0,100-23.0 运算结果 由此得出结论: 一个整数加上…

Go语言基础之接口

接口类型 一个接口类型就是一组方法的集合&#xff0c;它规定了需要实现的所有方法。 接口的定义 每个接口类型由任意个方法签名组成&#xff0c;接口的定义格式如下&#xff1a; type 接口类型名 interface{方法名1( 参数列表1 ) 返回值列表1方法名2( 参数列表2 ) 返回值列…

强化学习原理python篇08——actor-critic

强化学习原理python篇08——actor-critic 前置知识TD ErrorREINFORCEQACAdvantage actor-critic (A2C) torch实现步骤第一步第二步第三步训练结果 Ref 本章全篇参考赵世钰老师的教材 Mathmatical-Foundation-of-Reinforcement-Learning Actor-Critic Methods 章节&#xff0c;请…

C#小结:ScottPlot 5.0在VS2022桌面开发的应用(以winform为例)

目录 一、官网文档地址 二、在VS2022中安装Scottplot 三、拖动Scottplot 四、使用Scottplot 五、效果图 一、官网文档地址 官网地址&#xff1a;ScottPlot 5.0 食谱 本文内容来自于官网&#xff0c;选取了官网的一些比较好用的功能展示&#xff0c;如需学习更多功能&a…

个人建站前端篇(二)项目采用服务端渲染SSR

SSR的优点 更好的SEO首屏加载速度更快&#xff0c;用户体验更好可以使用相同的语言以及相同的声明式、面向组件的心智模型来开发整个应用&#xff0c;而不需要在后端模板系统和前端框架之间来回切换。 Vue生态中的SSR通用解决方案 Nuxt是一个构建于 Vue 生态系统之上的全栈框…

虚拟机扩容后黑屏卡死解决方法

亲测有效&#xff0c;首先一般是在扩容后黑屏的&#xff0c;现象为开机后看到个横线光标不闪&#xff0c;黑屏&#xff0c;进入不了桌面。原因是硬盘已经满了&#xff0c;所以解决方法就是清理硬盘。所以首先还是要解决登录问题。 开机时按 esc 键进入 GNU GRUB&#xff0c;选择…

C#网络爬虫之TianyaCrawler实战经验分享

互联网时代的到来带来了大量的数据&#xff0c;而网络爬虫技术成为了获取这些数据的重要途径之一。如果你是一名C#开发者&#xff0c;那么你可能会对TianyaCrawler这个强大的网络爬虫框架感兴趣。本文将带你深入了解TianyaCrawler&#xff0c;分享它的技术概况、使用场景&#…

PHP集成开发环境 PhpStorm 2023 for mac中文激活版

PhpStorm 2023 for Mac是一款功能强大的PHP集成开发环境&#xff08;IDE&#xff09;&#xff0c;旨在帮助开发者更高效地编写、调试和测试PHP代码。该软件针对Mac用户设计&#xff0c;提供了丰富的功能和工具&#xff0c;以简化开发过程并提高开发效率。 软件下载&#xff1a;…