跟着Nature Communications学数据分析:R语言做随机森林模型并对变量重要性排序

本文涉及的产品
交互式建模 PAI-DSW,5000CU*H 3个月
模型训练 PAI-DLC,5000CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: 跟着Nature Communications学数据分析:R语言做随机森林模型并对变量重要性排序

论文

Drivers and trends of global soil microbial carbon over two decades

https://www.nature.com/articles/s41467-022-31833-z#data-availability

这个里面有很多地图的图

还有自定义图例形状的代码

数据和代码

https://github.com/gpatoine/drivers_trends_microbial_carbon

这里有随机森林模型 然后对变量重要性进行排序的代码,今天的推文我们重复一下论文中的这部分内容,目前能够利用代码和数据运行得到结果,但是还不明白原理和代码中参数的具体作用。今天的内容只是对运行过程的记录。

部分示例数据集截图

image.png

前10个变量是用来构建模型的变量,其中有一个是分类变量,其他都是数值型数据,最后一列Cmic是因变量

读取数据

library(readr)
library(tidyverse)
dat<-read_csv("data/20221215/drivers_trends_microbial_carbon-main/rf_example.csv")
dat %>% head()
dat %>% colnames()

构建随机森林模型

library(caret)
set.seed(202)
predictors<-colnames(dat)[1:10]
model <- train(x = dat[,predictors], 
               y = dat$Cmic,
               method = "rf",
               importance = TRUE,
               tuneGrid = expand.grid(mtry = c(2:4)), # length(predictors) or 2:6
               trControl = trainControl(method = "cv", 
                                        number = 20,
                                        p = 0.75,
                                        savePredictions = TRUE))

这一步需要的时间还是相对比较长的

代码中各个参数都是什么意思还需要仔细看看

输出模型的RSEM和R方

model$results %>% as_tibble %>% filter(mtry == model$bestTune %>% unlist) %>% select(RMSE, Rsquared)

棒棒糖图展示模型重要性

varImp(model)

varImp(model) %>% plot
varImp(model, scale = FALSE) %>% plot

image.png

image.png

还可以用ggplot2画两个柱形图来展示

varImp(model)$importance %>% 
  as.data.frame() %>% 
  rownames_to_column("var") %>% 
  arrange(Overall) %>% 
  mutate(var=factor(var,levels = rev(var))) %>% 
  ggplot(aes(x=var,y=Overall))+
  geom_col(aes(fill=var),show.legend = FALSE)+
  theme_bw()+
  labs(x=NULL) -> p1

varImp(model,scale = FALSE)$importance %>% 
  as.data.frame() %>% 
  rownames_to_column("var") %>% 
  arrange(Overall) %>% 
  mutate(var=factor(var,levels = rev(var))) %>% 
  ggplot(aes(x=var,y=Overall))+
  geom_col(aes(fill=var),show.legend = FALSE)+
  theme_bw()+
  labs(x=NULL) -> p2

library(patchwork)
p1+
  theme(axis.text.x = element_text(angle=60,vjust=1,hjust=1))+
  p2+
  theme(axis.text.x = element_text(angle=60,vjust=1,hjust=1))

image.png

后面还有代码是将这个随机森林模型重复运行100次,使用到了map()和map_dfr()函数,这两个函数还得仔细学习一下用法

关于这个代码感兴趣的可以去看看原文提供的代码

示例数据和代码可以给公众号推文点赞,点击在看,最后留言获取

欢迎大家关注我的公众号

小明的数据分析笔记本

小明的数据分析笔记本 公众号 主要分享:1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关转录组学、基因组学、群体遗传学文献阅读笔记;3、生物信息学入门学习资料及自己的学习笔记!
相关文章
|
2月前
【R语言实战】——带有高斯新息的金融时序的GARCH模型拟合预测及VAR/ES风险度量
【R语言实战】——带有高斯新息的金融时序的GARCH模型拟合预测及VAR/ES风险度量
|
2月前
【R语言实战】——带有新息为标准学生t分布的金融时序的GARCH模型拟合预测
【R语言实战】——带有新息为标准学生t分布的金融时序的GARCH模型拟合预测
|
6天前
|
数据采集 机器学习/深度学习 数据挖掘
Python基于波动率模型(ARCH和GARCH)进行股票数据分析项目实战
Python基于波动率模型(ARCH和GARCH)进行股票数据分析项目实战
|
10天前
|
数据采集 机器学习/深度学习 数据可视化
关于Python数据分析项目的简要概述:从CSV加载数据,执行数据预处理,进行数据探索,选择线性回归模型进行训练,评估模型性能并优化,最后结果解释与可视化。
【7月更文挑战第5天】这是一个关于Python数据分析项目的简要概述:从CSV加载数据,执行数据预处理(填充缺失值,处理异常值),进行数据探索(可视化和统计分析),选择线性回归模型进行训练,评估模型性能并优化,最后结果解释与可视化。此案例展示了数据科学的典型流程。
31 2
|
20天前
|
机器学习/深度学习 自然语言处理 数据挖掘
使用Python和大模型进行数据分析和文本生成
Python语言以其简洁和强大的特性,成为了数据科学、机器学习和人工智能开发的首选语言之一。随着大模型(Large Language Models, LLMs)如GPT-4的崛起,我们能够利用这些模型实现诸多复杂任务,从文本生成到智能对话、数据分析等等。在这篇文章中,我将介绍如何用Python连接和使用大模型,并通过示例展示如何在实际项目中应用这些技术。
|
17天前
|
机器学习/深度学习 数据可视化 算法
探索MATLAB世界:掌握基础知识与实用技能(1. MATLAB环境与基本操作 2. 数据类型与变量 3. 条件与循环,1. 数据分析与统计 2. 图像处理与计算机视觉 3. 信号处理与控制系统)
探索MATLAB世界:掌握基础知识与实用技能(1. MATLAB环境与基本操作 2. 数据类型与变量 3. 条件与循环,1. 数据分析与统计 2. 图像处理与计算机视觉 3. 信号处理与控制系统)
15 0
|
2月前
【R语言实战】——Logistic回归模型
【R语言实战】——Logistic回归模型
|
2月前
|
数据可视化
R语言广义线性混合模型GLMMs在生态学中应用可视化2实例合集|附数据代码2
R语言广义线性混合模型GLMMs在生态学中应用可视化2实例合集|附数据代码
|
2月前
|
数据可视化 数据挖掘
R语言广义线性混合模型GLMMs在生态学中应用可视化2实例合集|附数据代码1
R语言广义线性混合模型GLMMs在生态学中应用可视化2实例合集|附数据代码
|
2月前
|
前端开发 数据可视化
R语言广义线性混合模型(GLMM)bootstrap预测置信区间可视化
R语言广义线性混合模型(GLMM)bootstrap预测置信区间可视化