CHARLS 是一项具备中国大陆 45 岁及以上人群代表性的追踪调查,旨在建设一个高质量的公共微观数据库,采集的信息涵盖社会经济状况和健康状况等多维度的信息,以满足老龄科学研究的需要

在这里插入图片描述
本次复现的文章是Development and validation of a machine learning-based diagnostic model for Parkinson’s disease in community-dwelling populations: Evidence from
the China health and retirement longitudinal study (CHARLS) (基于机器学习的诊断模型的开发与验证社区居民帕金森氏病的证据中国健康与退休纵向研究(CHARLS))

在这里插入图片描述
我稍微和大家理一下思路,作者的思路其实很简单,就是先收集29个变量做多个机器学习模型,然后看哪个模型ROC最高,然后就发现随机森林最高。然后作者就想随机森林中使用几个变量得到的roc和其他参数最好。

所以有了今天的内容,就是复现文章中的表四和图三

在这里插入图片描述
在这里插入图片描述
表四和图三其实是同一个东西,就是表达在随机森林模型中,使用几个变量模型的预测能力达到最大。
本次就是复现这个内容,我没有收集到本篇文章的数据,取一个类似的数据来代替

我先导入R包和数据

library(scitable)
library(sciml)
library(pROC)
pbc<-read.csv("E:/r/test/pbc2.csv",sep=',',header=TRUE)
pbc<-na.omit(pbc)

在这里插入图片描述
这个是个胆管炎的数据,status是它的结局变量,咱们把数据分层训练集和测试集

set.seed(1)
index <- sample(2,nrow(pbc),replace = TRUE,prob=c(0.7,0.3))
traindata <- pbc[index==1,]
testdata <- pbc[index==2,]
traindata$status<-as.factor(traindata$status)
testdata$status<-as.factor(testdata$status)

生成随机森林模型

out<-scirandomForest(data=traindata,y="status",username=username,token=token)
fit<-out[["fit"]]

获取模型参数

out<-rocparameter(fit = fit,newdata = testdata)

在这里插入图片描述
复现图三和表四很简单,只需要一句话代码,就能得到结果,说下这里的指标规则,先是5个起步,每次加5个

out2<-sci.rocparameter(data=traindata,testdata =testdata ,y="status",username=username,token=token)

在这里插入图片描述
在这里插入图片描述
我们可以看到10个变量的时候,模型能力是最佳的,假如我们想要更多的指标,可以对指标进行自定义,这里要注意一下AUC1是不能放进来的

dput(names(out2))
plotvar=c("Threshold", "Sensitivity", "Specificity", "PPV", "NPV", "Accuracy",
          "F1", "Precision", "Recall", "Detection.Rate", "Balanced.Accuracy",
          "AUC", "Features")
out2<-sci.rocparameter(data=traindata,testdata =testdata ,y="status",username=username,token=token,
                       plotvar =plotvar)

在这里插入图片描述
如果你想自定义变量数,也是可以的

###更换变量数
out2<-sci.rocparameter(data=traindata,testdata =testdata ,y="status",username=username,token=token,
                       plotvar =plotvar,num.var=c(5,7,10,15))

在这里插入图片描述
在这里插入图片描述
我们可以看到7个变量的时候,模型能力更加好,优于10个。

后面视频更加详细精彩。

复现一篇charls机器学习3.5分文章的不同数量特征模型能力展示图

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐