我正在使用自适应方法来找到最佳的模型参数。但是我找不到设置参数最小值和最大值的方法。
例如,在下面的简化示例中,我想强制训练函数在8到12之间找到一个k。当然,我知道,对于这种简单情况,我可以使用tuneGrid参数。
library(caret)
ctrl2 <- trainControl(method = "adaptive_cv",
repeats = 5)
mod2 <- train(Species ~ ., data = iris,
method = "knn",
tuneLength = 3,
trControl = ctrl2)
答案 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.