利用vivid包,点亮机器学习模型图:惊艳的可视化新体验

news2024/11/27 16:47:55

一、引言

随着大数据时代的到来,机器学习技术在各个领域得到了广泛的应用。然而,由于机器学习模型的复杂性和抽象性,理解和解释这些模型往往是一项挑战。因此,机器学习可视化成为了连接数据和模型理解之间的桥梁,具有至关重要的意义。

可视化技术可以将机器学习过程中的数据和模型转化为直观、易于理解的图形和图像,帮助研究人员和开发者更深入地理解数据的分布和特征,以及模型的内部结构和决策过程。通过可视化,我们可以更清晰地观察模型的性能、发现潜在问题,并进行优化和改进。

在这个背景下,'vivid'包应运而生。作为一款专门用于机器学习模型可视化的R包,'vivid'提供了丰富的功能和选项,使得模型的可视化变得更加简单、直观和有效。它不仅能够展示模型的结构和权重,还能够揭示模型的决策过程和预测结果,为我们提供了更深入的模型理解方式。

在本文中,我们将介绍'vivid'包的基本用法和功能,并展示如何利用它进行机器学习模型的可视化。通过具体的示例和案例,我们将展示'vivid'包在点亮机器学习模型图方面的惊艳效果,帮助读者更好地理解和应用这一强大的可视化工具。

二、vivid包概述

2.1 vivid包的来源与开发者介绍

vivid包是由《The R Journal》杂志主编及其团队开发的一款R语言包,专门为机器学习模型的可视化设计。作为R语言社区中的知名人士,该主编在机器学习和数据可视化领域具有深厚的学术背景和丰富的实践经验。他深知可视化在机器学习中的重要性,因此带领团队开发了这款功能强大的可视化工具,为研究者提供了更直观、便捷的方式来理解和分析机器学习模型。

2.2 vivid包的主要功能及特点

vivid包具有多种强大的功能,旨在帮助用户轻松创建令人印象深刻的机器学习模型图。其主要功能包括:

  • 多样化的模型可视化:vivid包支持多种机器学习模型的可视化,包括但不限于决策树、神经网络、支持向量机等。用户可以根据模型类型选择合适的可视化方法,直观地展示模型的结构和决策过程。
  • 高度自定义:vivid包提供了丰富的参数和选项,允许用户根据需求自定义图形的样式、布局和颜色等。这使得用户可以创建出符合自己审美和需求的个性化机器学习模型图。
  • 交互式可视化:部分功能支持创建交互式图形,用户可以通过点击、拖动等方式与图形进行交互,进一步探索和理解模型的细节。
  • 集成性与扩展性:vivid包与其他R语言包具有良好的集成性,用户可以结合其他可视化工具或分析方法,实现更复杂的可视化任务。同时,vivid包也支持用户自定义扩展功能,满足更多特定需求。

2.3 安装与加载vivid包的步骤

# 计算变量交互以及重要性图
install.packages("vivid"
# 制作网络图
install.packages(c("network""sna""scales""intergraph""lemon")) 
if (!requireNamespace("graph", quietly = TRUE)){install.packages("BiocManager")
  BiocManager::install("graph")
}
install.packages("zenplots")
library(vivid)

三、示例展示

  • 「数据集准备」
library(survival)
head(gbsg)

结果展示:

   pid age meno size grade nodes pgr er hormon rfstime status
1  132  49    0   18     2     2   0  0      0    1838      0
2 1575  55    1   20     3    16   0  0      0     403      1
3 1140  56    1   40     3     3   0  0      0    1603      0
4  769  45    0   25     3     1   0  4      0     177      0
5  130  65    1   30     2     5   0 36      1    1855      0
6 1642  48    0   52     2    11   0  0      0     842      1
  • 「示例数据集介绍」
> str(gbsg)
'data.frame':   686 obs. of  10 variables:
 $ age    : int  49 55 56 45 65 48 48 37 67 45 ...
 $ meno   : int  0 1 1 0 1 0 0 0 1 0 ...
 $ size   : int  18 20 40 25 30 52 21 20 20 30 ...
 $ grade  : int  2 3 3 3 2 2 3 2 2 2 ...
 $ nodes  : int  2 16 3 1 5 11 8 9 1 1 ...
 $ pgr    : int  0 0 0 0 0 0 0 0 0 0 ...
 $ er     : int  0 0 0 4 36 0 0 0 0 0 ...
 $ hormon : int  0 0 0 0 1 0 0 1 1 0 ...
 $ rfstime: int  1838 403 1603 177 1855 842 293 42 564 1093 ...
 $ status : Factor w/ 2 levels "0","1"1 2 1 1 1 2 2 1 2 2 ...

age:患者年龄
meno:更年期状态(0表示未更年期,1表示已更年期)
size:肿瘤大小
grade:肿瘤分级
nodes:受累淋巴结数量
pgr:孕激素受体表达水平
er:雌激素受体表达水平
hormon:激素治疗(0表示否,1表示是)
rfstime:复发或死亡时间(以天为单位)
status:事件状态(0表示被截尾,1表示事件发生)
  • 「划分训练集和测试集」
# 划分训练集和测试集
set.seed(123)
data <- gbsg[,c(-1)]


# 划分训练集和测试集
set.seed(123)
train_indices <- sample(x = 1:nrow(data), size = 0.7 * nrow(data), replace = FALSE)
test_indices <- sample(setdiff(1:nrow(data), train_indices), size = 0.3 * nrow(data), replace = FALSE)

train_data <- data[train_indices, ]
test_data <- data[test_indices, ]
  • 「拟合模型」
library(randomForest)
set.seed(123)
rf_model  <- randomForest(status~., data=train_data)
  • 「构建vivid的解释器」
set.seed(123)
VIVI_rf <- vivi(data = train_data,
                fit = rf_model,
                response = "status",
                reorder = TRUE,
                normalized = FALSE,
                importanceType = "agnostic",
                gridSize = 50,
                nmax = 500,
                class = 1,
                predictFun = NULL,
                numPerm = 4)
print(VIVI_rf, digits = 1)

结果展示:

        rfstime   pgr  size nodes    er   age grade hormon  meno
rfstime   0.239 0.031 0.029 0.020 0.022 0.021 0.021  0.008 0.004
pgr       0.031 0.100 0.011 0.016 0.012 0.009 0.005  0.009 0.001
size      0.029 0.011 0.075 0.009 0.007 0.008 0.005  0.005 0.002
nodes     0.020 0.016 0.009 0.090 0.014 0.009 0.005  0.009 0.001
er        0.022 0.012 0.007 0.014 0.082 0.008 0.003  0.004 0.003
age       0.021 0.009 0.008 0.009 0.008 0.071 0.004  0.005 0.002
grade     0.021 0.005 0.005 0.005 0.003 0.004 0.032  0.001 0.001
hormon    0.008 0.009 0.005 0.009 0.004 0.005 0.001  0.028 0.002
meno      0.004 0.001 0.002 0.001 0.003 0.002 0.001  0.002 0.014
attr(,"class")
[1] "vivid"  "matrix" "array" 
  • 「绘制特性相关性和重要性热图」
viviHeatmap(mat = VIVI_rf)

# 修改颜色
viviHeatmap(mat = VIVI_rf,
            impPal = rev(colorspace::sequential_hcl(palette = "Red-Blue", n = 100)))

  • 「绘制特性相关性和重要性网格图」
viviNetwork(mat = VIVI_rf)
  • 「偏依赖图」
pdpVars(data = train_data,
        fit = rf_model,
        response = "status",
        vars = colnames(VIVI_rf)[1:6],
        nIce = 70)

vars = colnames(VIVI_rf)[1:6] 提取了矩阵的前面6个特征;nIce = 70指定了个体条件期望曲线的条数。

从上图可以看出,黑色的线条指代偏依赖图,而彩色的线条指代个体条件期望曲线。从上图的结果大致可以判断rfstime、pgr以及nodes对因变量有较大的影响。

四、总结

vivid包在机器学习可视化方面展现出了显著的优势与贡献。它提供了一套完整且易于使用的可视化工具,使得机器学习的过程变得更加直观和易于理解。通过vivid包,用户能够轻松地对数据集进行可视化探索,发现数据中的潜在规律和模式。同时,该包还支持对机器学习模型的训练和预测结果进行可视化展示,帮助用户更好地理解模型的性能和行为。

*「未经许可,不得以任何方式复制或抄袭本篇文章之部分或全部内容。版权所有,侵权必究。」

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

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

相关文章

DP:子数组模型

一、最大子数组和 . - 力扣&#xff08;LeetCode&#xff09; 二、环形子数组的最大和 . - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int maxSubarraySumCircular(vector<int>& nums) {//动态规划思想解决 //环形数组问题&#xff0c;尝试转…

AIGC实战——StyleGAN(Style-Based Generative Adversarial Network)

AIGC实战——StyleGAN 0. 前言1. StyleGAN1.1 映射网络1.2 合成网络1.3 自适应实例归一化层1.4 风格混合1.5 随机变化 2. StyleGAN 生成样本3. StyleGAN23.1 权重调制与解调3.2 路径长度正则化3.3 非渐进式增长 4. StyleGAN2 生成样本小结系列链接 0. 前言 StyleGAN (Style-Ba…

STM32F4 IAP跳转APP问题及STM32基于Ymodem协议IAP升级笔记

STM32F4 IAP 跳转 APP问题 ST官网IAP例程Chapter1 STM32F4 IAP 跳转 APP问题1. 概念2. 程序2.1 Bootloader 程序 问题现象2.2. APP程序 3. 代码4. 其他问题 Chapter2 STM32-IAP基本原理及应用 | ICP、IAP程序下载流程 | 程序执行流程 | 配置IAP到STM32F4xxxChapter3 STM32基于Y…

linux-docker安装nginx

1.拉取镜像&#xff1a; docker pull nginx2.创建挂在路径&#xff1a; mkdir -p /usr/local/nginx/conf mkdir -p /usr/local/nginx/logs mkdir -p /usr/local/nginx/www mkdir -p /usr/local/nginx/conf.d 3.启动镜像:为了拿到位置文件&#xff0c;先启动下 docker run -…

本地项目提交 Github

工具 GitIdeaGithub 账号 步骤 使用注册好的 Github 账号&#xff0c;登陆 Github&#xff1b; 创建 Repositories (存储库)&#xff0c;注意填写图上的红框标注&#xff1b; 创建完成之后&#xff0c;找到存储库的 ssh 地址或 https 地址&#xff0c;这取决于你自己的配置…

linux网络知识

七层模型 应用层 为操作系统或者网络应用程序提供网络服务的接口 表示层 解决不同系统之间的通信问题&#xff0c;负责数据格式的转换 会话层 自动收发包&#xff0c;自动寻址&#xff0c;负责建立和断开连接 传输层 将上层数据分段并提供端到端的…

Qt/C++推流组件使用说明

2.1 网络推流 公众号&#xff1a;Qt实战&#xff0c;各种开源作品、经验整理、项目实战技巧&#xff0c;专注Qt/C软件开发&#xff0c;视频监控、物联网、工业控制、嵌入式软件、国产化系统应用软件开发。 公众号&#xff1a;Qt入门和进阶&#xff0c;专门介绍Qt/C相关知识点学…

17. 【Android教程】开关控件ToggleButton/Switch

本节要学的两个控件是我们在使用 Android 手机时经常会用到的&#xff0c;相信大家对它并不陌生&#xff0c;甚至是非常熟悉&#xff0c;但是现实是很多开发者并不了解开关控件&#xff0c;所以会花不少功夫通过 TextView 或 Button 来实现开关功能&#xff0c;殊不知 Android …

CSS 实现无限波浪边框卡片

CSS 实现无限波浪边框卡片 效果展示 鼠标悬停效果&#xff0c;底部色块的边框是无限滚动的波浪 鼠标没有悬停效果 CSS 知识点 CSS 基础知识回顾使用 radial-gradient 实现波浪边框使用 anumate 属性实现波浪边框动画和控制动画运动 波浪实现原理 波浪边框的实现思路其…

【产品】ADW300 无线计量仪表 用于计量低压网络的三相有功电能

1 概述 ADW300 无线计量仪表主要用于计量低压网络的三相有功电能&#xff0c;具有体积小、精度高、功能丰富等优点&#xff0c;并且可选通讯方式多&#xff0c;可支持 RS485 通讯和 Lora、2G、NB、4G 等无线通讯方式&#xff0c;增加了外置互感器的电流采样模式&#xff0c;从…

day6 nest商业项目初探·二(java转ts全栈/3R教室)

背景&#xff1a;今天看3r教室开放的这个项目 【美国 | 3.6w】TS全栈&#xff1a;Goflashdeals代购返利网站 &#xff08;2022.09&#xff09; - 3R酷 | 爱自由,不打工&#xff01;一个属于3R会员的社区 (3rku.com)省流&#xff1a;web程序起来了&#xff0c;admin没起来&#…

CUDA 12.4文档2 内核线程架构

本博客参考官方文档进行介绍&#xff0c;全网仅此一家进行中文翻译&#xff0c;走过路过不要错过。 官方网址&#xff1a;https://docs.nvidia.com/cuda/cuda-c-programming-guide/ 本文档分成多个博客进行介绍&#xff0c;在本人专栏中含有所有内容&#xff1a; https://bl…

分享|如何知道自己是不是大数据信用黑名单?

随着大数据技术在金融贷前审核环节中的运用&#xff0c;早在多年前都形成了大数据信用&#xff0c;大数据信用作为辅助的风控工具&#xff0c;作用变得十分重要&#xff0c;其中大数据黑名单就是大数据差的重要一种&#xff0c;那如何知道自己是不是大数据信用黑名单呢?本文详…

Linux:gcc

Linux&#xff1a;gcc gcc概述语言发展史gcc的编译过程预处理编译汇编 gcc的链接过程动态库与静态库 gcc概述 GCC&#xff08;英文全拼&#xff1a;GNU Compiler Collection&#xff09;是 GNU 工具链的主要组成部分&#xff0c;是一套以 GPL 和 LGPL 许可证发布的程序语言编译…

python--正则表达式,元字符,反义符,转义符,位数问题

正则表达式&#xff08;regular expression&#xff09;&#xff1a; 为什么使用正则表达式&#xff1a; 在软件开发过程中&#xff0c;经常会涉及到大量的关键字等各种字符串的操作&#xff0c;使用正则表达式能很大程度的简化开发的复杂度和开发的效率&#xff0c;所以pytho…

麒麟V10安装Redis6.2.6

1、下载redis安装包 Redis各版本下载&#xff1a;https://download.redis.io/releases/ 2、将下载后的.tar.gz压缩包上传到到服务器自定义文件夹下 3、 解压文件 tar -zxvf redis-6.2.6.tar.gzmv redis-6.2.6 redis4、安装redis 在redis文件夹下输入make指令 cd /opt/redi…

【React】react 初学增删改查购物车案例

界面 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>react-购物车案例</title><…

华为OD机试 - 机器人搬砖 - 二分查找(Java 2024 C卷 100分)

华为OD机试 2024C卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷C卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;每一题都有详细的答题思路、详细的代码注释、样例测试…

centos 7.9 nginx本地化安装,把镜像改成阿里云

1.把centos7.9系统切换到阿里云的镜像源 1.1.先备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup1.2.下载新的CentOS-Base.repo配置文件 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo特别…

css面试题--定位与浮动

1、为什么需要清除浮动&#xff1f; 在非IE浏览器下&#xff0c;容器不设高度且子元素浮动时&#xff0c;容器高度不能被内容撑开&#xff0c;内容会溢出到容器外面而影响布局。这种现象被称为浮动。 浮动的原理&#xff1a;浮动元素脱离文档流&#xff0c;不占用空间&#xff…