首页 > 技术文章 > R语言实现随机森林

kwq717 2021-04-28 18:36 原文

R语言实现随机森林

install.packages("pacman")
install.packages("caret")
install.packages("pROC")
install.packages()
install.packages("randomForest")

library(randomForest)
library(ggplot2)
library(lattice)
library(pacman)
library(caret)
library(pROC)
library(rpart)

data(iris)
dim(iris)
trainlist<-createDataPartition(iris$Species,p=0.7,list=FALSE)
#取出百分之七十的iris数据
trainset<-iris[trainlist,]
testset<-iris[-trainlist,]
#一部分分成训练集,另一部分则为测试集
set.seed(2000)#生成2000个随机数
rf.train<-randomForest(as.factor(Species)~.,data=trainset,
                       importance=TRUE,na.action = na.pass)
#因变量是Species,.表示其他都为自变量,数据来自trainset
#importance表示随机森林需要给出每一个变量重要性的排序
#na.action表示如何处理缺失值
plot(rf.train,main = "randomforest")#画图,main表示设置标题
#三种颜色代表三种鸢尾花,黑色代表三种鸢尾花平均值
#横轴是决策树的数目,纵轴是误差数
rf.test<-predict(rf.train,newdata = testset,type = "class")
rf.test
rf.cf<-caret::confusionMatrix(as.factor(rf.test),
                              as.factor(testset$Species))
rf.test2<-predict(rf.train,newdata = testset,type="prob")
roc.rf<-multiclass.roc(testset$Species,rf.test2)
fit1=rpart(Species~.,data=trainset)
pre2=predict(fit1,testset,type="prob")
roc1<-multiclass.roc(testset$Species,pre2[,1])
plot(roc1$rocs[[1]],col="red")
plot(roc1$rocs[[3]],add=TRUE,col="green")
#画出roc曲线,显示预测效果

推荐阅读