逻辑回归中的特征筛选-经管之家官网!

人大经济论坛-经管之家 收藏本站
您当前的位置> 会计>>

会计库

>>

逻辑回归中的特征筛选

逻辑回归中的特征筛选

发布:Imasasor | 分类:会计库

关于本站

人大经济论坛-经管之家:分享大学、考研、论文、会计、留学、数据、经济学、金融学、管理学、统计学、博弈论、统计年鉴、行业分析包括等相关资源。
经管之家是国内活跃的在线教育咨询平台!

经管之家新媒体交易平台

提供"微信号、微博、抖音、快手、头条、小红书、百家号、企鹅号、UC号、一点资讯"等虚拟账号交易,真正实现买卖双方的共赢。【请点击这里访问】

提供微信号、微博、抖音、快手、头条、小红书、百家号、企鹅号、UC号、一点资讯等虚拟账号交易,真正实现买卖双方的共赢。【请点击这里访问】

R语言小白,问一个迭代循环的问题,请高手帮忙写个程序。想做一个逻辑回归,特征有很多,100多个,想进行一些特征筛选和降维,尝试了PCA,但是结果没能提高预测效果,因此放弃这种方法。现在自己想了一个粗暴直接的方 ...
坛友互助群


扫码加入各岗位、行业、专业交流群


R语言小白,问一个迭代循环的问题,请高手帮忙写个程序。
想做一个逻辑回归,特征有很多,100多个,想进行一些特征筛选和降维,尝试了PCA,但是结果没能提高预测效果,因此放弃这种方法。
现在自己想了一个粗暴直接的方法进行特征筛选:
1)将100个特征分别进行单因素建模并测试,也就是单变量分析,提取其中预测效果最好的一个特征,保留下来,比如是var10
2)将第一步中的var10保留,依次加入剩余99个特征形成2个特征的模型,共99个模型,提取其中预测效果最好的一个特征,保留下来,比如var18
3) 将前两步保留的两个变量(var10, var18)保留,依次加入剩余98个特征形成3个特征的模型,找到最好的一个特征
....
依次进行100+99+98+....+3+2+1次循环,从而找到最好的特征组合。
我已经写了部分代码如下,测试数据见附件,请高手帮忙将这个迭代循环写下去。
需求:
1)最终结果生成一个dataframe,有三列,第一列为model 1, mode1 2,表示单变量,二变量,三变量;第二列是特征列表,第三列为评价模型好坏的coverage
2)控制循环,当第n次循环,添加变量不能继续提升模型预测效果时,跳出循环,保留预测效果最好的特征组合。
测试数据,目标变量是xxg,其它为特征,依次筛选
  1. #第一步,将xxg按7:3随机分成trainset和testset
  2. set.seed(2)
  3. ind<-sample(2,nrow(xxg),replace=T,prob=c(0.7,0.3))
  4. trainset<-xxg[ind==1,]
  5. testset<-xxg[ind==2,]

  6. #xxg_lr<-glm(xxg~age,family = binomial,data=trainset)

  7. #特征列表存于varlist向量
  8. varlist<-c("sex","diabetes","age","bmi","hypertension")

  9. #第一轮循环
  10. for (i in 1:5){
  11. xxg_lr<-glm(xxg~eval(parse(text=varlist[i])),family = binomial,data=trainset) #Logistic regression
  12. #模型测试,模型用于testset后,使用模型输出P值Top 30%作为切点,得出此切点以上的人群中目标变量xxg=1占
  13. #全部人群xxg=1的百分比,Coverage,此输出变量作为验证模型好环的关键变量
  14. real<-testset$xxg #测试目标变量真实值
  15. predict_lr<-predict(xxg_lr,type="response",newdata=testset) #预测目标变量P值
  16. rr<-cbind(real,predict_lr)
  17. result<-as.data.frame(rr)
  18. result<-result[order(result$predict_lr,decreasing=T),]
  19. n<-length(result$real)
  20. cover<-sum(result$real[1:ceiling(0.3*n)])/sum(result$real) #选择模型Top 30%,求coverage
  21. eval(parse(text=paste(varlist[i],"<-cover",sep=""))) #将coverage赋值给另一变量
  22. }

  23. model_1<-rbind(sex,diabetes,age,bmi,hypertension) #第一输循环得出hypertension预测效果最好,用于下一循环

  24. #第二轮循环
  25. varlist2<-c("sex","diabetes","age","bmi")
  26. for (i in 1:4){
  27. xxg_lr<-glm(xxg~hypertension+eval(parse(text=varlist2[i])),family = binomial,data=trainset)
  28. real<-testset$xxg
  29. predict_lr<-predict(xxg_lr,type="response",newdata=testset)
  30. rr<-cbind(real,predict_lr)
  31. result<-as.data.frame(rr)
  32. result<-result[order(result$predict_lr,decreasing=T),]
  33. n<-length(result$real)
  34. cover<-sum(result$real[1:ceiling(0.3*n)])/sum(result$real)
  35. eval(parse(text=paste("hypertension_",varlist[i],"<-cover",sep="")))
  36. }
  37. model_2<-rbind(hypertension_age,hypertension_bmi,hypertension_sex,hypertension_diabetes)
  38. #第二循环得出diabetes预测效果最好,用于下一循环

  39. #第三轮循环,添加diabetes
  40. #########
复制代码
扫码或添加微信号:坛友素质互助


「经管之家」APP:经管人学习、答疑、交友,就上经管之家!
免流量费下载资料----在经管之家app可以下载论坛上的所有资源,并且不额外收取下载高峰期的论坛币。
涵盖所有经管领域的优秀内容----覆盖经济、管理、金融投资、计量统计、数据分析、国贸、财会等专业的学习宝库,各类资料应有尽有。
来自五湖四海的经管达人----已经有上千万的经管人来到这里,你可以找到任何学科方向、有共同话题的朋友。
经管之家(原人大经济论坛),跨越高校的围墙,带你走进经管知识的新世界。
扫描下方二维码下载并注册APP
本文关键词:

本文论坛网址:https://bbs.pinggu.org/thread-4590474-1-1.html

人气文章

1.凡人大经济论坛-经管之家转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
数据分析师 人大经济论坛 大学 专业 手机版