相对重要性分析

 在生态环境领域中,有时候我们要分析多个解释变量对响应变量的影响,当含有多个响应变量时,为了方便展示,我们可以bar图对结果展示。R的relaimpo程序包有多种模式计算解释变量的重要性,这里以“lmg”模式为例。

library(relaimpo)
library(vegan)
fc=read.csv("D:\\wykt\\factor.csv",header = T,row.names = 1)###解释因子
sp=read.csv("D:\\wykt\\sp.csv",header = T,row.names = 1)####响应变量
spp=decostand(sp,method = "hellinger")
fcc=log10(fc)
dt=as.data.frame(cbind(spp,fcc))
dat=list()
###因为我的响应变量数据是在1到16列,这里根据自己的数据做修改
for (i in 1:16) {
  re=calc.relimp(dt[,i]~pH+SOM+AP+N,data=dt,rank = F,
                 rela=T,type="lmg")
  dat[[i]]=re@lmg
}
uu1=as.data.frame(dat)
colnames(uu1)=as.data.frame(colnames(dt))[c(1:16),]
####直接基于上面的数据画图
library(ggplot2)
library(reshape2)
library(dplyr)
pp=as.data.frame(cbind(uu1,se=row.names(uu1)))
io=melt(pp,id.vars = "se",value.name = "vv",variable.name = "sps")####把宽数据变为长数据
ggplot(data=io,aes(x=sps,y=vv,fill=se))+
  geom_bar(position = "fill",stat = "identity",width = 0.9)+
  geom_text(data =io %>% filter(round(vv,digits = 2) >0.1),aes(label=round(vv,digits = 2)),position = "fill",size=3,
            hjust="inward",vjust=-0.5,stat = "identity")+
  ylab("Relative importances")+xlab("species")+
  scale_fill_manual(values = c(37,"purple",75,"tan",62,"yellow",160,"red",100,"pink",1,120,20))+
  scale_y_reverse(expand = c(0,0),labels  = c("1","0.75","0.50","0.25","0"))+
  theme_classic()+
  theme(axis.text.x = element_text(color = "black",size = 8,angle = 90))+
  theme(axis.text.y = element_text(color = "black",size = 8))+
  theme(legend.position = "right",legend.text = element_text(size = 15),
        panel.grid =element_blank())+
  guides(fill=guide_legend(title=NULL,color="black",reverse=TRUE))

在这里插入图片描述
 上图,我们可以看出每个解释变量对响应变量的影响大小,并且是定量的。对于bar图的颜色修改,可根据期刊要求或自己喜好进行修改(代码调整),对于图中数字的位置可用AI软件移动(若是用代码修改,估计是得不偿失)。类似的分析方法有可定量的集成推进树、广义提升回归模型以及随机森林。对生态环境领域数据分析及绘图感兴趣的朋友,欢迎加QQ群335774366,以便交流、学习。
声明:以上代码及观点,仅供参考。

  • 16
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
XGBoost是一种强大的机器学习算法,它可以用于回归和分类问题,并且在许多数据科学竞赛中表现出色。在XGBoost中,特征的重要性是指特征对模型预测能力的贡献程度。了解特征的重要性可以帮助我们理解哪些特征对于预测结果更为关键。 在XGBoost中,特征的重要性可以通过计算特征的增益(gain)来评估。增益是解释每个特征的相对重要性的最相关属性。具体来说,XGBoost使用了一种基于树模型的算法来计算特征的增益。在XGBoost的源码中,可以看到使用增益来进行特征重要性判断的过程。 要从XGBoost模型中访问和绘制特征的重要性评分,可以使用XGBoost提供的函数。例如,可以使用`get_score`函数来获取特征的重要性评分,并使用可视化工具(如matplotlib)将其绘制出来。这样可以更直观地了解哪些特征对于模型的预测能力更为重要。 在使用XGBoost模型进行特征选择时,可以根据特征的重要性进行筛选。可以选择保留重要性较高的特征,或者根据自己的需求设定一个阈值,只保留重要性超过该阈值的特征。这样可以减少特征空间的维度,提高模型的效率和泛化能力。 对于小型数据集,使用交叉验证作为模型评估方案可能是一种更有用的策略。交叉验证可以帮助我们更准确地评估模型的性能,并避免过拟合或欠拟合的问题。通过交叉验证,我们可以得到更稳定的特征重要性评估结果。 总之,XGBoost提供了一种有效的方法来计算和使用特征的重要性。通过分析特征的重要性,我们可以更好地理解模型的预测能力,并进行特征选择以提高模型的性能。 #### 引用[.reference_title] - *1* [Python中XGBoost的特性重要性和特性选择](https://blog.csdn.net/liuzonghao88/article/details/88857468)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【算法】关于xgboost特征重要性的评估](https://blog.csdn.net/sunyaowu315/article/details/90664331)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [[机器学习] 树模型(xgboost,lightgbm)特征重要性原理总结](https://blog.csdn.net/zwqjoy/article/details/97259891)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值