我正在对我的数据进行
a) 通过
b) 在构建 knn 模型时,使用
我的问题: (1)我注意到有人建议在trainControl中更改pca参数:someone。
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)我注意到有人建议在trainControl中更改pca参数:someone。
ctrl <- trainControl(preProcOptions = list(thresh = 0.8))
mod <- train(Class ~ ., data = Sonar, method = "pls",
trControl = ctrl)
如果我更改trainControl中的参数,那么这是否意味着在KNN期间仍会进行PCA?类似于此问题的担忧
(2) 我找到了另一个示例,适合我的情况 - 我希望将阈值更改为90%,但我不知道在Caret
的train
函数中该如何更改,特别是我仍然需要使用scale
选项。
对于我冗长的描述和随机引用,我深感歉意。谢谢您提前!
(感谢Camille的建议使代码正常工作!)
caret
没有太多的经验,但看起来preProcess
应该是train
的一个参数,而不是一个函数。将preProcess(c('scale','pca'))
更改为preProcess = c('scale','pca')
。 - camille