Я выполняю knn
регрессию на моих данных и хотел бы:
a) провести перекрестную проверку через repeatedcv
, чтобы найти оптимальное k
;
b) при построении модели knn, используя PCA
при пороге уровня 90%
для уменьшения размерности.
library(caret)
library(dplyr)
set.seed(0)
data = cbind(rnorm(20, 100, 10), matrix(rnorm(400, 10, 5), ncol = 20)) %>%
data.frame()
colnames(data) = c('True', paste0('Day',1:20))
tr = data[1:15, ] #training set
tt = data[16:20,] #test set
train.control = trainControl(method = "repeatedcv", number = 5, repeats=3)
k = train(True ~ .,
method = "knn",
tuneGrid = expand.grid(k = 1:10),
#trying to find the optimal k from 1:10
trControl = train.control,
preProcess = c('scale','pca'),
metric = "RMSE",
data = tr)
Мои вопросы:
(1) Я заметил, что кто-то предложил изменить параметр pca в trainControl:
ctrl <- trainControl(preProcOptions = list(thresh = 0.8))
mod <- train(Class ~ ., data = Sonar, method = "pls",
trControl = ctrl)
ЕслиЯ изменяю параметр в trainControl, означает ли это, что PCA все еще проводится во время KNN? Подобная проблема, как этот вопрос
(2) Я нашел еще один пример , который соответствует моей ситуации - я надеюсь изменить порог на 90%, но я незнаете, где я могу изменить его в функции Caret
train
, особенно мне все еще нужна опция scale
.
Прошу прощения за утомительное длинное описание и случайные ссылки.Заранее спасибо!
(Спасибо, Камилла, за предложения по созданию кода!)