【R语言】随机森林

【五分钟机器学习】随机森林(RandomForest):看我以弱搏强

install.packages("randomForest")
library(randomForest)
library(tidyverse)
#随机生成一个数据集,构建一个随机森林模型
tmp <- data.frame(x1=runif(100,0,1),x2=runif(100,0,1),x3=runif(100,0,1),x4=runif(100,0,1),x5=runif(100,0,1),x6=runif(100,0,1),x7=runif(100,0,1),x8=runif(100,0,1),y=sample(c(1,0),100,T))
tmp$y <- as.factor(tmp$y)
rf <- randomForest(y~.,data = tmp,proximinty=TRUE)
rf

在这里插入图片描述

#获取变量的重要性
importance(rf)
#对变量的重要性进行可视化
varImpPlot(rf)

在这里插入图片描述

#绘制出不同数目时随机森林模型的误差,可以用于判断随机森林中构建多少棵树最合适
plot(rf)
#决策树在100棵左右时误差就达到了最小值

在这里插入图片描述

#寻找最优的特征述目
set.seed(1)
mtry <- tuneRF(x=tmp[,-9],y=tmp[,9])
#2

在这里插入图片描述

#预测结果
pre <- predict(rf,newdata=tmp,type="prob")
pre %>% head(3)

在这里插入图片描述

接下来使用ISLR包中的Caravan数据集来重新构建模型,该数据包含5822个真实客户记录。
每个记录由86个变量组成,包含社会人口统计数据(变量1~43)和产品所有权(变量44~86)。社会人口统计学数据来自邮政编码。生活在具有相同邮政编码的区域的所有客户具有相同的社会人口学属性。
变量86(购买)表示客户是否购买了大篷车保险单。
期望通过模型的构建,进行预测,判断用户是否会购买大篷车的保险。

set.seed(1)
my_data <- ISLR::Caravan


#划分训练集和测试集
train_index <- caret::createDataPartition(my_data$Purchase,p=.8,list=FALSE,times = 1)
train_DF <- my_data[train_index,]
validate_DF <- my_data[-train_index,]

train_y <- train_DF$Purchase
train_x <- dplyr::select(train_DF,-Purchase)

validate_y <- validate_DF$Purchase
validate_x <- dplyr::select(validate_DF,-Purchase)


#构建模型
rf_model1 <- randomForest(x=train_x,y=train_y,importance=TRUE,na.action=na.exclude)
varImpPlot(rf_model1)

在这里插入图片描述

validate_preds <- predict(rf_model1,newdata=validate_x,type="prob")

pred_y <- vector()

for(i in 1:nrow(validate_preds)){
  if (validate_preds[i]>=0.5){
    pred_y[i]="No"
  }
  else{
    pred_y[i]="Yes"
  }
}

pred_y <- factor(pred_y,levels = c("No","Yes"))
caret::confusionMatrix(pred_y,validate_y)

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值