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曲線,顯示預測效果