在R中进行分类的Model和$ FinalModel之间的区别?

时间:2019-01-03 09:40:42

标签: r machine-learning r-caret

当前获得了这个随机森林模型,只是看到它对糖尿病阳性或糖尿病阴性的预测有多好

使用插入符号工作流计算模型

当我查看变量的重要性时,我被告知要使用代码 randomForest::importance(model$finalModel)

$ finalModel的用途是什么?与原始模型相比,$ finalModel是什么?不仅仅是查看原始模型是否作为参数传递,而是查看变量重要性?

以下示例:

library(tidyverse)
library(mlbench)
library(caret)
library(car)
library(glmnet)
library(rpart.plot)
library(rpart)

data("PimaIndiansDiabetes2")

PimaIndiansDiabetes2 <- na.omit(PimaIndiansDiabetes2)

set.seed(123)

training.samples <- PimaIndiansDiabetes2$diabetes %>% createDataPartition(p = 0.8, list = FALSE)

train.data <- PimaIndiansDiabetes2[training.samples,]

test.data <- PimaIndiansDiabetes2[-training.samples,]


model_rf <- caret::train(
  diabetes ~., 
  data = train.data, 
  method = "rf", 
  trControl = trainControl("cv", number = 10), 
  importance = TRUE)


model_rf

model_rf$bestTune

model_rf$finalModel

# variable importance here 

importance(model_rf$finalModel)

1 个答案:

答案 0 :(得分:1)

来自documentation

  

finalModel使用最佳参数的适合对象

在大多数情况下,train会传递一些不同的值用于超参数估计,以找到实现最佳性能的值(使用trainControl)。

model_rf内部,您可以在finalModel下找到使用最佳参数构建的模型。

FYI caret还具有用于变量重要性绘图的功能:varImp