模型用途:建立模型,对客户进行分类。
数据有42个自变量,其中有多分类变量、二分类变量和连续性变量,因变量为二分类变量。
所有的二分类变量都转换为0和1,多分类变量用随机的数字来代表,例如
星座
处女座 2
水瓶座 3
天蝎座 5
金牛座 7
巨蟹座 8
白羊座 10
狮子座 13
双鱼座 11
摩羯座 4
天秤座 0
双子座 16
射手座 17
样本为5112个客户,有788个为坏客户,4324个为好客户。现在想通过随机森林对新进来的客户进行分类,训练集为70%的数据,测试集为30%的数据。模型对训练集预测的正确率为100%,对测试集预测的正确率几乎为0,,找不到解决办法。
R语言代码如下:
因变量~id,其余为自变量。
radata <- read.csv("E://jue//1sst.csv",header=T)
ind <- sample(2, nrow(radata), replace=TRUE, prob=c(0.7, 0.3))
traindata <- radata[ind==1,]
testdata<- radata[ind==2,]
traindata$id <- as.factor(traindata$id)
traindata$a <- as.factor(traindata$a)
traindata$b <- as.factor(traindata$b)
traindata$c <- as.factor(traindata$c)
traindata$d <- as.factor(traindata$d)
traindata$g <- as.factor(traindata$g)
traindata$h <- as.factor(traindata$h)
traindata$i <- as.factor(traindata$i)
traindata$n <- as.factor(traindata$n)
traindata$r <- as.factor(traindata$r)
traindata$s <- as.factor(traindata$s)
raindata$ae <- as.factor(traindata$ae)
traindata$ag <- as.factor(traindata$ag)
traindata$ai <- as.factor(traindata$ai)
traindata$aj <- as.factor(traindata$aj)
traindata$am <- as.factor(traindata$am)
traindata$an <- as.factor(traindata$an)
testdata$a <- as.factor(testdata$a)
testdata$b <- as.factor(testdata$b)
testdata$c <- as.factor(testdata$c)
testdata$d <- as.factor(testdata$d)
testdata$g <- as.factor(testdata$g)
testdata$h <- as.factor(testdata$h)
testdata$i <- as.factor(testdata$i)
testdata$n <- as.factor(testdata$n)
testdata$r <- as.factor(testdata$r)
testdata$s <- as.factor(testdata$s)
testdata$ae <- as.factor(testdata$ae)
testdata$ag <- as.factor(testdata$ag)
testdata$ai <- as.factor(testdata$ai)
testdata$aj <- as.factor(testdata$aj)
testdata$am <- as.factor(testdata$am)
testdata$an <- as.factor(testdata$an)
library(randomForest)
randommodel<-randomForest(id~a+b+c+d+e+f+g+h+i+j+k+l+m+n+r+s+v+w+x+y+z+aa+ab+ac+ad+ae+af+ag+ah+ai+aj+ak+al+am+an+ao+ap+aq+ar+as+at+au,data=traindata,ntree=300,mtry=12)
prediction<-predict(randommodel,newdata=testdata,type="class")
frep<-table(prediction,testdata$id)
frep


雷达卡





京公网安备 11010802022788号







