在看datacastle的建模大赛,用r写了随机森林的二分类,上次代码用py跑的,这里想用交叉验证,但是跑了一天一夜也木有出来,还是把代码先保留下来吧,希望看到的人指正
rm(list=ls())
setwd("D:\\competitions\\datacastle\\p2p")train_x<-read.csv("train_x.csv",header=T)
train_y<-read.csv("train_y.csv",header=T)
train_y$y<-as.factor(unlist(train_y[2]))
#head(train_y)
fea<-read.csv("D:\\competitions\\datacastle\\p2p\\原始数据\\features_type.csv")
test<-read.csv("test_x.csv")
n<-nrow(train_x)
print("查看y中正负样本分布")
分布<-table(train_y[2])
cat("正负样本分布",分布)
比例<-prop.table(table(train_y[2]))
cat("正负样本比例",比例)
print("把train和test中类别型变量变成factor")
train和test特征<-rbind(train_x,test)
因子化train和test<-sapply(train和test特征[,-1][,fea[2]=='category'],as.factor)
#head(因子化train和test,n=2)
print("把因子化的数据和连续型的合并")
ok_data<-cbind(train和test特征[,-1][,!fea[2]=='category'],因子化train和test)
ok_data1<-cbind(train和test特征[,1],ok_data)
#dim(ok_data)
names(ok_data1)[1]<-"uid"
训练x<-ok_data1[1:n,]
合并训练x和y<-merge(训练x,train_y,by.x="uid",by.y="uid")
#head(train_y)
#dim(合并训练x和y)
print("生成平衡的训练数据")
rep<-合并训练x和y[合并训练x和y$y==0,]
for (i in 1:6){
rep<-rbind(rep,合并训练x和y[合并训练x和y$y==0