2021-08-01 变量选择

考虑p值

library(Hmisc)
res<-rcorr(as.matrix(meta13_raw[-1]))
Sat_Var<-character()
j=1
for(i in 1:nrow(res$r)){
  Var_Cor<-as.vector(res$r[,i][-i])
  Var_Pval<-as.vector(res$P[,i][-i])
  if((all(Var_Cor > 0.5) | all(Var_Cor < -0.5)) & all(Var_Pval < 1)){
    Sat_Var[j]<-colnames(res$r)[i]
    j=j+1
  }
}

考虑有序

#Import data
meta13_raw<-read.csv("/Users/lyc/Desktop/2013_mature_meta_mod.csv",header=T)
colnames(meta13_raw)[1]<-"flavor"
#Fill the missing
library(zoo)
meta13_raw[]<-lapply(meta13_raw,na.aggregate)
#Select variables
vars<-c(colnames(meta13_raw[-1]))
result<-c()
library(MASS)
for(i in 1:582){
  fit<-polr(substitute(as.factor(flavor) ~ x,list(x=as.name(vars[i]))) , data=meta13_raw,Hess=TRUE)
  result<-rbind(result,c(vars[i],AIC(fit)))
}
result<-result[order(result[,2]),]
Var_end<-result[c(1:10)]
#Create a new dataset
library(dplyr)
meta13_new<-select(meta13_raw,c(Var_end))
fla<-meta13_raw[1]
meta13_end<-cbind(fla,meta13_new)
#Partitioned dataset
set.seed(123)
library(caret)
training.samples<-meta13_end$flavor%>%
  createDataPartition(p=0.8,list=FALSE)
train.data<-meta13_end[training.samples,]
test.data<-meta13_end[-training.samples,]
#Build a model
library(MASS)
model<-polr(as.factor(flavor) ~.,data=train.data,Hess = TRUE)
predicted.classes<-model%>%
  predict(test.data)

仅单标记回归用十个变量,最通顺的路,测自己96%测14年69%

#Import data
meta13_raw<-read.csv("/Users/lyc/Desktop/2013_mature_meta_mod.csv",header=T)
colnames(meta13_raw)[1]<-"flavor"
#Fill the missing
library(zoo)
meta13_raw[]<-lapply(meta13_raw,na.aggregate)
#Select variables
vars<-c(colnames(meta13_raw[-1]))
result<-c()
library(nnet)
for(i in 1:582){
  fit<-nnet::multinom(substitute(flavor ~ x,list(x=as.name(vars[i]))) , data=meta13_raw,MaxNWts=1500)
  result<-rbind(result,c(vars[i],AIC(fit)))
}
result<-result[order(result[,2]),]
Var_end<-result[c(1:10)]
#Create a new dataset
library(dplyr)
meta13_new<-select(meta13_raw,c(Var_end))
fla<-meta13_raw[1]
meta13_end<-cbind(fla,meta13_new)
#Partitioned dataset
set.seed(123)
library(caret)
training.samples<-meta13_end$flavor%>%
  createDataPartition(p=0.8,list=FALSE)
train.data<-meta13_end[training.samples,]
test.data<-meta13_end[-training.samples,]
#Build a model
library(nnet)
model<-nnet::multinom(flavor ~.,data=train.data,MaxNWts=1500)
predicted.classes<-model%>%
  predict(test.data)
head(predicted.classes)
#Test the model
mean(predicted.classes==test.data$flavor)
#Test the model by using 2014data
meta14_raw<-read.csv("/Users/lyc/Desktop/2014_mature_meta_mod.csv",header=T)
colnames(meta14_raw)[1]<-"flavor"
library(zoo)
meta14_raw[]<-lapply(meta14_raw,na.aggregate)
predicted.classes2<-model%>%
  predict(meta14_raw)
head(predicted.classes2)
mean(predicted.classes2==meta14_raw$flavor)

[1] "tlfm581" "tlfm801" "tlfm781" "tlfm553" "tlfm917"
[6] "tlfm576" "tlfm896" "tlfm582" "tlfm574" "tlfm883"

能不能找到相关性非常高的去掉啊?

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 504b 0304 1400 0008 0800 4498 963d a6fa9ff3 9f41 1e00 a88...
    BossOx阅读 11,412评论 0 0
  • 504b 0304 1400 0008 0800 fa8c 963d 50740baa dffc 0e00 6cd...
    BossOx阅读 3,540评论 0 0
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 126,160评论 2 7
  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 6,120评论 0 4