R基于逻辑回归模型实现心脏病检测及SHAP值解释项目实战

说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后关注获取。

1.项目背景

心血管疾病是全球范围内导致死亡的主要原因之一,每年有数百万人因此失去生命。在众多的心脏病中,冠心病尤为常见,它是由向心脏供血的冠状动脉发生硬化或阻塞所引起的。早期发现心脏病的风险因素并进行有效干预对于降低发病率和死亡率至关重要。然而,由于心脏病的发生受到多种复杂因素的影响,包括但不限于年龄、性别、血压、胆固醇水平等,传统的诊断方法往往存在一定的局限性。基于此,利用先进的数据分析技术,特别是逻辑回归模型,对心脏病风险进行预测成为了研究热点之一。

逻辑回归作为一种广泛应用于医学领域的统计分析方法,能够有效地处理二分类问题,并通过概率形式输出结果,非常适合用于心脏病风险评估。通过收集患者的各种生理指标数据,如年龄、性别、体重指数(BMI)、血压、血糖水平等,逻辑回归模型可以学习到这些特征与心脏病发作之间的关系,从而帮助医生更准确地识别高危人群。此外,随着机器学习解释性的日益重视,SHAP(Shapley Additive exPlanations)值作为一种新兴的解释工具,能够为每个预测提供详细的贡献度分析,使得模型不仅限于预测,还能解释为何做出这样的预测,这对于医疗决策支持系统尤为重要。

本项目旨在利用R语言实现一个基于逻辑回归的心脏病检测模型,并采用SHAP值来解释模型的预测结果。首先,我们将从公开的数据集中获取心脏病相关的多维度数据,然后进行必要的数据清洗和预处理工作,以确保数据的质量和一致性。接着,使用逻辑回归模型训练数据,并评估其性能。最后,借助SHAP值深入分析各特征对心脏病预测的重要性及其影响方向,进而提升模型的透明度和可解释性。通过这一系列步骤,我们期望不仅能提高心脏病预测的准确性,还能为临床医生提供有价值的参考信息,辅助制定个性化的治疗方案。

本项目通过R基于逻辑回归模型实现心脏病检测及SHAP值解释项目实战。             

2.数据获取

本次建模数据来源于网络(本项目撰写人整理而成),数据项统计如下:

编号 

变量名称

描述

1

age

病人的年龄(以年为单位)

2

sex

病人性别 (1 = 男, 0 = 女)

3

cp

胸痛类型 (1: 典型心绞痛, 2: 非典型心绞痛, 3: 无心绞痛, 4: 无症状)

4

trestbps

入院时的静息血压(毫米汞柱)

5

chol

血清中的胆固醇含量(毫克/分升)

6

fbs

空腹血糖水平 (> 120 mg/dl 为 1, 否则为 0)

7

restecg

静息心电图结果 (0: 正常, 1: ST-T 波异常, 2: 可能或肯定的左室肥大)

8

thalach

达到的最大心率

9

exang

运动诱发的心绞痛 (1 = 是, 0 = 否)

10

oldpeak

相对于休息的旧峰 ST 抑制(连续值)

11

slope

峰值运动 ST 段的斜率 (1: 上坡, 2: 平坦, 3: 下坡)

12

ca

通过荧光透视显示的主要血管数目(0-3)

13

thal

心肌灌注显像的结果 (3 = 正常, 6 = 固定缺陷, 7 = 可逆缺陷)

14

y

0 = 没有心脏病病,1 = 有心脏病

数据详情如下(部分展示):

3.数据预处理

3.1 查看数据

使用head()方法查看前五行数据:

关键代码:

3.2数据缺失查看

使用colSums方法统计数据缺失信息:

从上图可以看到,总共有14个变量,数据中无缺失值。

关键代码:

3.3数据描述性统计

通过summary方法来查看数据的平均值、最小值、分位数、最大值。

关键代码如下:  

4.探索性数据分析

4.1 因变量柱状图

用ggplot工具绘制柱状图:

4.2 y=1样本chol变量分布直方图

用ggplot工具绘制直方图:

4.3 相关性分析

从上图中可以看到,数值越大相关性越强,正值是正相关、负值是负相关。

5.特征工程

5.1 哑特征处理

哑特征处理,即将类别型变量转换为若干二进制变量,以利于统计模型中使用,有效提高模型准确性与解释力。

关键代码如下:

处理结果部分展示:

5.2 数据集拆分

通过subset方法按照80%训练集、20%验证集进行划分,关键代码如下:

6.构建逻辑回归分类模型 

主要通过R基于逻辑回归模型实现心脏病检测,用于目标分类。           

6.1 构建模型

模型名称

模型参数

逻辑回归分类模型    

y ~ .

data = data

family = binomial(link = 'logit')

6.2 模型摘要信息

7.模型评估

7.1评估指标及结果

评估指标主要包括准确率、查准率、查全率、F1分值等等。

模型名称

指标名称

指标值

测试集

逻辑回归分类模型  

准确率

0.8360656

查准率

0.8285714

查全率

0.8787879

F1分值 

0.8529412

从上表可以看出,F1分值为0.8529,说明逻辑回归模型效果良好。               

关键代码如下:

7.2 混淆矩阵

从上图可以看出,实际为0预测不为0的 有6个样本,实际为1预测不为1的 有4个样本,模型效果良好。    

7.3 SHAP解释图

SHAP图通常用来展示特征对模型预测的贡献程度,从上图可以看出,蓝色代表正向影响,红色代表负向影响, SHAP值越大对模型的贡献越大。

8.结论与展望

综上所述,本文采用了通过逻辑回归分类算法来构建分类模型,最终证明了我们提出的模型效果良好。此模型可用于日常产品的建模工作。

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

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

相关文章

嵌入式学习笔记 -函数嵌套时以及异常响应时,LR使用的具体过程

函数嵌套时以及异常响应时,寄存器LR的作用存在显著区别,理解这个问题对于理解freeRTOS底层代码的实现大有帮助,具体使用过程如下: 一 函数嵌套时的LR使用的具体过程 在ARM架构(特别是M0处理器)中,函数嵌套调用时LR(L…

Java String函数的使用

文章目录 String字符串比较字符串查找转化字符串替换字符串拆分字符串截取(常用)字符串的不可变性 String str本来是字符串常量的引用,应该打印地址,但是编译器重写了toString方法,所以打印hello String 的构造方法 …

Oracle 11G RAC重启系统异常

vmware安装centos7环境部署Oracle RAC (11.2.0.4) 部署时所有资源情况都是正常的,关机重启虚拟机后集群资源状态异常,请教CSDN大佬 – 部署规划 域名地址备注rac16192.168.31.16rac17192.168.31.17rac16vip192.168.31.26viprac17vip192.168.31.27vip…

吉林省CCPC与全国邀请赛(东北地区赛)游记

总述: 本次赛段共获得一银(吉林省赛)、一铜(东北地区赛)、一铁(全国邀请赛的成绩)。总体成绩跟校内赛的情况相比队伍状态与发挥水准都有提升),但也体现出很多不足&#x…

「Python教案」循环语句的使用

课程目标 1.知识目标 能使用for循环和while循环设计程序。能使用循环控制语句,break、continue、else设计程序。能使用循环实际问题。 2.能力目标 能根据需求合适的选择循环结构。能对嵌套循环代码进行调试和优化。能利用循环语句设计&am…

OpenCV---findCountours

一、基本概念与用途 findContours是OpenCV中用于在二值图像中查找轮廓的核心函数。轮廓作为连续的点集,能够精确勾勒出物体的边界,广泛应用于目标检测、形状分析、图像分割等领域。 函数核心价值 目标检测:通过轮廓定位图像中的物体&#…

20250523-BUG:无法加载“GameLib/Framework.h“头文件(已解决)

BUG:无法加载"GameLib/Framework.h"头文件(已解决) 最近在打开新的C项目时报了这个错,我是按照以下步骤来排除的BUG,希望对您有所帮助~ 检查【C/C】-【附加包含目录】中的路径有无问题,一般需要加…

商品条形码查询接口如何用C#进行调用?

一、什么是商品条码查询接口? 1974年6月26日,美国俄亥俄州的一家超市首次使用商品条码完成结算,标志着商品条码正式进入商业应用领域。这项技术通过自动识别和数据采集,极大提升了零售行业的作业效率,减少了人工录入错…

SD07_NVM的安装及相关操作

以下是在 Windows 系统 上使用 NVM(Node Version Manager) 管理多个 Node.js 版本的详细步骤,从零开始操作: 一、准备工作 卸载旧版 Node.js 打开 控制面板 → 程序和功能,找到已安装的 Node.js 和 npm,彻底…

OSI 深度安全防御体系架构深度剖析

文章目录 前言什么是 OSI 深度安全防御体系架构各层的安全防御措施物理层数据链路层网络层传输层会话层表示层应用层 OSI 深度安全防御体系架构的优势全方位防护深度防御灵活性和可扩展性 总结 前言 大家好,我是沛哥儿。今天咱们来深入探讨一下 OSI 深度安全防御体…

大模型应用:开发移动端页面个人中心页面提示词

角色 你是一个移动端web页面开发专家,擅长开发移动端页面,使用原生web技术(html,css,js),开发的页面针对手机移动端友好 技术栈 使用基础的Html,CSS,JavaScript方案实现&#xff…

从零到一:影刀RPA学习者的破局之路

1. 学习目标与预期差距分析 1.1 官方课程学习目标梳理 影刀RPA的官方课程旨在帮助学习者掌握RPA(机器人流程自动化)的基本概念、操作技能和常见应用场景。课程内容通常包括: RPA基础理论:介绍RPA的定义、优势、发展历程以及与其…

计算机组成与体系结构:硬盘驱动器(Hard Disk Drives)

目录 💽 硬盘驱动器(HDD):传统的固定辅助存储设备 什么是硬盘驱动器? 硬盘的工作原理 HDD 的物理结构 Disk Pack(盘组) Tracks(磁道) Cylinders(柱面&…

GitCode镜像仓库批量下载开发实录

GitCode作为国内领先的开源代码托管平台,其镜像仓库批量下载功能对开发者生态建设与开源协作效率提升具有关键价值。本文基于企业级代码资产管理需求,系统记录从需求分析到生产部署的全周期开发实践。内容覆盖镜像仓库同步机制设计、分布式任务调度优化、…

基线配置管理:为什么它对网络稳定性至关重要

什么是基线配置(Baseline Configuration) 基线配置(Baseline Configuration)是经过批准的标准化主设置,代表所有设备应遵循的安全、合规且运行稳定的配置基准,可作为评估变更、偏差或未授权修改的参考基准…

AJAX get请求如何提交数据呢?

在 AJAX 中使用 GET 请求提交数据,主要通过 在 URL 后拼接查询参数 的方式实现,具体步骤如下: 1.构造带参数的 URL 将数据以 键值 的形式拼接在 URL 后,多个参数间用 & 连接。例如: var url "https://exa…

基于FashionMnist数据集的自监督学习(对比式自监督学习SimCLR算法)

目录 一,对比式自监督学习 1.1 简介 1.2 常见算法 1.2.1 SimCLR (2020) 1.2.2 MoCo (2020) 1.2.3 BYOL (2021) 1.2.4 SimSiam (2021) 1.2.5 CLIP (2021) 1.2.6 DINO (2021) 1.2.7 SwAV (2020) 二,代码逻辑分析 2.1 整体目标与流程 2.2 数据…

Linux:基础指令与内涵理解(下)与权限

1.mv 作用:将文件移动、文件重命名 语法: mv (选项) 源文件/目录 目标文件/目录 (1)将文件/目录移动到当前目录的新文件/目录(也就是重命名操作) 这里我们mv了test.txt文件到当前目录下当前并不存在的ln.tx…

卷积神经网络(CNN)入门学习笔记

什么是 CNN? CNN,全称 卷积神经网络(Convolutional Neural Network),是一种专门用来处理图片、语音、文本等结构化数据的神经网络。 它模仿人眼识别图像的方式: 从局部到整体,一步步提取特征&a…

c#基础07(调试与异常捕捉)

文章目录 调试与异常捕捉调试异常处理C#中的异常类异常处理抛出对象 调试与异常捕捉 很多时间,写代码不能一撸到底,中间都是经历过无数次的调试,才能正常正确的运行起来。.Net调试有很多方法和技巧。 调试 在C#中程序调试主要指在Visual S…