R语言fastshap包进行支持向量机shap可视化分析

news2024/10/7 17:36:31

1995年VAPINK 等人在统计学习理论的基础上提出了一种模式识别的新方法—支持向量机 。它根据有限的样本信息在模型的复杂性和学习能力之间寻求一种最佳折衷。 以期获得最好的泛化能力.支持向量机的理论基础决定了它最终求得的是全局最优值而不是局部极小值,从而也保证了它对未知样本的良好泛化能力。
支持向量机的理论最初来自对两类数据分类问题的处理。SV M 考虑寻找一个超平面, 以使训练集中属于不同分类的点正好位于超平面的不同侧面, 并且,还要使这些点距离该超平面尽可能远。 即寻找一个超平面, 使其两侧的空白区域最大

在这里插入图片描述
既往我们在文章《R语言手把手教你进行支持向量机分析》中介绍了e1071包进行支持向量机分析。今天咱们来介绍一下fastshap包进行支持向量机shap可视化分析,
先导入数据

library(e1071)
library(caret)
bc<-read.csv("E:/r/test/demo.csv",sep=',',header=TRUE)
bc <- na.omit(bc)

在这里插入图片描述
数据变量很多,我解释几个我等下要用的,HBP:是否发生高血压,结局指标,AGE:年龄,是我们的协变量,BMI肥胖指数,FEV1肺活量指标,WEIGHT体重,“SBP”,“DBP”:收缩压和舒张压。公众号回复:体检数据,可以获得数据。
有些变量用不到,我先精简一下,把结局变量变成因子,这个很重要。

bc<-bc[,c("HBP","BMI","AGE","FEV1","WEIGHT","SBP","DBP","SEX")]
bc$HBP<-as.factor(bc$HBP)
bc$SEX<-as.factor(bc$SEX)

接下来就是对数据进行标准化,这样可以消除数据见的差异。
定义一个标准化的小程序

f1<-function(x){
  return((x-min(x)) / (max(x)-min(x)))
}
bc.scale<-as.data.frame(lapply(bc[2:7],f1))
bc.scale<-cbind(HBP=bc$HBP,SEX=bc$SEX,bc.scale)

#分成建模和验证组

set.seed(12345)
tr1<- sample(nrow(bc.scale),0.7*nrow(bc.scale))##随机无放抽取
bc_train <- bc.scale[tr1,]#70%数据集
bc_test<- bc.scale[-tr1,]#30%数据集

接下来咱们要生成一个支持向量机的模型,这里我就直接上代码了,想具体了解的直接可以看上面的文章。

############生成模型
svm  <- svm(HBP~.,data=bc.scale, probability = TRUE)

接下来咱们导入fastshap包和辅助包fastshap包可以做全局解释和辅助解释,其实就是全部数据和部分数据或者单个数据。我这里只做全局解释,

library(magrittr)
library(tidyverse)
library(fastshap)
library(shapviz)

使用fastshap包可以做很多模型的shap,做shap可视化的关键就是要定义一个生成预测值概率的函数,

pred_wrapper <- function(model,newdata){
  newdata$def_pred<-predict(model, newdata=newdata,probability = TRUE)
  Pred_Prob <- attr(newdata$def_pred, "probabilities")
  def_pred<-as.data.frame(Pred_Prob)
  newdata$prob1<-def_pred[,2]
  newdata$prob1
}

其实就是一个放入模型生成预测值的简单函数,然后咱们还要生成一个没有结局变量的数据矩阵

x<-bc_train[,-1]

生成以后就是用fastshap包的explain函数来进行计算shap就可以了,使用的是蒙特卡罗算法。Nsim就是蒙特卡罗算法的次数,作者说尽量多点比较好

shap <- explain(svm, X = x, pred_wrapper = pred_wrapper, nsim = 10, adjust = TRUE,
                shap_only = FALSE)

生成以后就用shapviz包来可视化就行

shv.global <- shapviz(shap)
sv_importance(shv.global)

在这里插入图片描述
也可以做一些变量的相关依赖性分析

sv_dependence(shv.global, v = "AGE")

在这里插入图片描述

sv_dependence(shap.global, v = "SEX")

在这里插入图片描述

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

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

相关文章

揭秘Conda:Python开发者必备的包管理神器

conda 简介 Conda 是一个开源的包管理系统和环境管理系统&#xff0c;用于安装和管理软件包以及创建和维护不同的软件环境。 它最初是为 Python 语言设计的&#xff0c;但现在已经支持多种编程语言&#xff0c;包括 R、Ruby、Lua、Scala 等。 1、Anaconda&#xff1a;是一个…

041基于SSM+Jsp的高校校园点餐系统

开发语言&#xff1a;Java框架&#xff1a;ssm技术&#xff1a;JSPJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包…

在pycharm中使用jupyter

在pycharm中使用jupyter 前置条件&#xff1a;你的环境中应该有juptyer &#xff0c;没有的话 pip install jupyter 点击项目目录&#xff0c;右键->new->jupyter notebook 打开file settings 找到 jupyter server &#xff08;按照默认的用代理服务器就行&#xff09; P…

整洁架构SOLID-单一职责原则(SRP)

文章目录 定义案例分析重复的假象代码合并解决方案 小结 定义 SRP是SOLID五大设计原则中最容易被误解的一个。也许是名字的原因&#xff0c;很多程序员根据SRP这个名字想当然地认为这个原则就是指&#xff1a;每个模块都应该只做一件事。 在历史上&#xff0c;我们曾经这样描…

全网最适合入门的面向对象编程教程:10 类和对象的Python实现-类的继承和里氏替换原则,Python模拟主机和传感器自定义类

全网最适合入门的面向对象编程教程&#xff1a;10 类和对象的 Python 实现-类的继承和里氏替换原则&#xff0c;Python 模拟主机和传感器自定义类 摘要&#xff1a; 本文主要介绍了类的继承的基本概念和里氏替换原则&#xff0c;以模拟传感器数据串口输出-上位机串口接收为例…

Python结合MobileNetV2:图像识别分类系统实战

一、目录 算法模型介绍模型使用训练模型评估项目扩展 二、算法模型介绍 图像识别是计算机视觉领域的重要研究方向&#xff0c;它在人脸识别、物体检测、图像分类等领域有着广泛的应用。随着移动设备的普及和计算资源的限制&#xff0c;设计高效的图像识别算法变得尤为重要。…

【反悔贪心 反悔堆】1642. 可以到达的最远建筑

本文涉及知识点 反悔贪心 反悔堆 LeetCode1642. 可以到达的最远建筑 给你一个整数数组 heights &#xff0c;表示建筑物的高度。另有一些砖块 bricks 和梯子 ladders 。 你从建筑物 0 开始旅程&#xff0c;不断向后面的建筑物移动&#xff0c;期间可能会用到砖块或梯子。 当…

AJAX-个人版-思路步骤整理版

前置知识&#xff1a;老式的web创建工程方法就是创建项目然后添加web工件&#xff0c;然后添加lib依赖如&#xff1a;tomcat,servlet&#xff0c;等。 传统请求 对于传统请求操作&#xff1a;整体流程也就是创建静态页面&#xff0c; <!DOCTYPE html> <html lang&q…

秋招突击——7/6——复习{前K个高频元素}——新作{数据流的中位数、有效括号、最小栈、字符串解码}

文章目录 引言复习前K个高频元素——使用堆去做个人实现参考官方——使用堆实现定义优先队列的基本方式 新作数据流的中位数个人实现参考做法 有效括号个人实现参考实现 最小栈个人实现参考实现 字符串解码个人实现参考实现 总结 引言 差不多摆烂了一上午&#xff0c;本来今天…

摸鱼大数据——Spark SQL——基本介绍和入门案例

Spark SQL 基本介绍 1、什么是Spark SQL Spark SQL是Spark多种组件中其中一个&#xff0c;主要是用于处理大规模的【结构化数据】 什么是结构化数据: 一份数据, 每一行都有固定的列, 每一列的类型都是一致的 我们将这样的数据称为结构化的数据例如: mysql的表数据1 张三 202 …

筛选Github上的一些优质项目

每个项目旁都有标签说明其特点&#xff0c;如今日热捧、多模态、收入生成、机器人、大型语言模型等。 项目涵盖了不同的编程语言和领域&#xff0c;包括人工智能、语言模型、网页数据采集、聊天机器人、语音合成、AI 代理工具集、语音转录、大型语言模型、DevOps、本地文件共享…

考虑数据库粒度的设计-提升效率

目录 概要 场景 设计思路 小结 概要 公开的资料显示&#xff0c;数据库粒度是&#xff1a;“在数据库领域&#xff0c;特别是数据仓库的设计中&#xff0c;粒度是一个核心概念&#xff0c;它直接影响到数据分析的准确性和存储效率。粒度的设定涉及到数据的详细程度和精度&…

哈弗架构和冯诺伊曼架构

文章目录 1. 计算机体系结构 2. 哈弗架构&#xff08;Harvard Architecture&#xff09; 3. 改进的哈弗架构 4. 冯诺伊曼架构&#xff08;Von Neumann Architecture&#xff09; 5. 结构对比 1. 计算机体系结构 计算机体系结构是指计算机系统的组织和实现方式&#xff0c…

Tabu Search — 温和介绍

Tabu Search — 温和介绍 目录 Tabu Search — 温和介绍 一、说明 二、什么是禁忌搜索以及我可以在哪里使用它&#xff1f; 三、禁忌搜索原则 四、短期记忆和积极搜索&#xff1a; 五、举例时间 六、结论&#xff1a; 七、参考&#xff1a; 一、说明 最近&#xff0c;我参加了…

《向量数据库指南》——Milvus Cloud检索器增强的深度探讨:句子窗口检索与元数据过滤

检索器增强的深度探讨&#xff1a;句子窗口检索与元数据过滤 在信息爆炸的时代&#xff0c;高效的检索系统成为了连接用户与海量数据的关键桥梁。为了进一步提升检索的准确性和用户满意度&#xff0c;检索器增强技术应运而生&#xff0c;其中句子窗口检索与元数据过滤作为两大…

coco数据集格式计算mAP的python脚本

目录 背景说明COCOeval 计算mAPtxt文件转换为coco json 格式自定义数据集标注 背景说明 在完成YOLOv5模型移植&#xff0c;运行在板端后&#xff0c;通常需要衡量板端运行的mAP。 一般需要两个步骤 步骤一&#xff1a;在板端批量运行得到目标检测结果&#xff0c;可保存为yol…

Django文档简化版——Django快速入门——创建一个基本的投票应用程序(3)

续上一篇&#xff0c;这一篇 着重于创建公共接口——“视图” 第三部分——3、视图和模板 1、概述2、编写更多视图原理——django依次访问了什么文件 3、写一个真正有用的视图一个快捷函数 render() render——渲染 4、抛出404错误一个快捷函数 get_object_or_404() 5、使用模…

【零基础】学JS

喝下这碗鸡汤 “知识就是力量。” - 弗朗西斯培根 1.三元运算符 目标:能利用三元运算符执行满足条件的语句 使用场景:其实是比if双分支更简单的写法&#xff0c;可以使用三元表达式 语法&#xff1a;条件 ? 满足条件的执行代码 : 不满足条件执行的代码 接下来用一个小案例来展…

英语学习交流小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;每日打卡管理&#xff0c;备忘录管理&#xff0c;学习计划管理&#xff0c;学习资源管理&#xff0c;论坛交流 微信端账号功能包括&#xff1a;系统首页&#xff0c;学习资源&…

AI周报(6.30-7.6)

AI应用-AI控制F16战机与人类飞行员狗斗 2024年美国国防部领导下的国防部高级研究计划局&#xff08;DARPA&#xff09;宣布&#xff0c;世界上首次人工智能&#xff08;AI&#xff09;驾驶的战斗机与人类驾驶的战斗机之间的空战&#xff0c;于去年秋季在加利福尼亚州爱德华兹空…