使用插入符号设置参数范围

时间:2018-09-04 08:12:37

标签: r r-caret

我正在使用自适应方法来找到最佳的模型参数。但是我找不到设置参数最小值和最大值的方法。

例如,在下面的简化示例中,我想强制训练函数在8到12之间找到一个k。当然,我知道,对于这种简单情况,我可以使用tuneGrid参数。

library(caret)
ctrl2 <- trainControl(method = "adaptive_cv",
                      repeats = 5)

mod2 <- train(Species ~ ., data = iris,
              method = "knn",
              tuneLength = 3,
              trControl = ctrl2)

1 个答案:

答案 0 :(得分:0)

您可以使用tuneGrid指定在训练中选择的调整值。请注意,不同的模型(即knn,svm等)将具有不同的调整值。

也如?caret::train中所述:

  

tuneGrid
  具有可能的调整值的数据帧。这些列的名称与调整参数相同。使用getModelInfo获取每个模型的调整参数的列表,或参见publishing an Android app。 (注意:如果指定,则必须命名该参数。)

您所用的工作代码为:

library(caret)

ctrl2 <- trainControl(method = "adaptive_cv",
                      repeats = 5)

grid_knn <- expand.grid(k=8:12)

set.seed(100)

mod2 <- train(Species ~ ., data = iris,
              method = "knn",
              tuneGrid = grid_knn,
              trControl = ctrl2)

哪个给出输出:

> mod2

 k-Nearest Neighbors 

150 samples
  4 predictor
  3 classes: 'setosa', 'versicolor', 'virginica' 

No pre-processing
Resampling: Adaptively Cross-Validated (10 fold, repeated 5 times) 
Summary of sample sizes: 135, 135, 135, 135, 135, 135, ... 
Resampling results across tuning parameters:

  k   Accuracy   Kappa  Resamples
   8  0.9600000  0.940   5       
   9  0.9733333  0.960  50       
  10  0.9733333  0.960  50       
  11  0.9746667  0.962  50       
  12  0.9666667  0.950   6       

Accuracy was used to select the optimal model using the largest value.
The final value used for the model was k = 11.