如何使用r中的插入符号包对最佳调谐超参数进行10次交叉验证,从而获得每个折叠的预测?

如何使用r中的插入符号包对最佳调谐超参数进行10次交叉验证,从而获得每个折叠的预测?,r,r-caret,R,R Caret,我尝试使用R中的插入符号包,使用10倍交叉验证和3次重复运行SVM模型。我希望使用最佳调整的超参数得到每个折叠的预测结果。我正在使用以下代码 # Load packages library(mlbench) library(caret) # Load data data(BostonHousing) #Dividing the data into train and test set set.seed(101) sample <- createDataPartition(BostonH

我尝试使用R中的插入符号包,使用10倍交叉验证和3次重复运行SVM模型。我希望使用最佳调整的超参数得到每个折叠的预测结果。我正在使用以下代码

# Load packages
library(mlbench)
library(caret)

# Load data
data(BostonHousing)

#Dividing the data into train and test set
set.seed(101)
sample <- createDataPartition(BostonHousing$medv, p=0.80, list = FALSE)
train <- BostonHousing[sample,]
test <- BostonHousing[-sample,]

control <- trainControl(method='repeatedcv', number=10, repeats=3, savePredictions=TRUE)
metric <- 'RMSE'

# Support Vector Machines (SVM) 
set.seed(101)
fit.svm <- train(medv~., data=train, method='svmRadial', metric=metric,
                 preProc=c('center', 'scale'), trControl=control)
fit.svm$bestTune
fit.svm$pred 
#加载包
图书馆(mlbench)
图书馆(插入符号)
#加载数据
数据(Boston外壳)
#将数据划分为列车和测试集
种子集(101)

示例实现目标的一种方法是使用
fit.svm$bestTune
中的超参数将
fit.svm$pred
子集,然后通过CV复制聚合所需的度量值。我将使用
dplyr
执行此操作:

library(tidyverse)
library(caret)
fit.svm$pred %>%
  filter(sigma == fit.svm$bestTune$sigma & C == fit.svm$bestTune$C) %>% #subset 
  mutate(fold = gsub("\\..*", "", Resample), #extract fold info from resample info
         rep = gsub(".*\\.(.*)", "\\1", Resample)) %>% #extract replicate info from resample info
  group_by(rep) %>% #group by replicate
  summarise(rmse = RMSE(pred, obs)) #aggregate the desired measure
输出:

# A tibble: 3 x 2
  rep    rmse
  <chr> <dbl>
1 Rep1   4.02
2 Rep2   3.96
3 Rep3   4.06
编辑2:回应评论。将观察值和预测值写入csv。文件:

fit.svm$pred %>%
  filter(sigma == fit.svm$bestTune$sigma & C == fit.svm$bestTune$C) %>%
  write.csv("predictions.csv")

我不希望RMSE作为输出。我希望观察到的值和预测值使用每个折叠的最佳调谐参数,这样我就可以计算预测的标准偏差或标准误差。使用您的代码,我只能看到前10个样本的观察值和预测值。如何将其写入.csv文件?非常感谢。我现在得到了期望的输出。如果有可能得到每次观测的标准偏差或标准误差,那么重复次数的平均值将非常有帮助。因此,你想要重复次数的标准偏差和误差,但原因是什么?对于RMSE?测量模型预测的不确定性。实际上,我将用它来绘制模型不确定性的数字地图。我想要模型预测的SE图或置信区间也能达到这个目的。是否有可能获得支持向量机预测的置信区间。我知道它适用于线性回归。你想知道预测的置信区间吗?我想你可以通过引导来做到这一点。我不知道任何用于估计SVM置信区间的封闭形式计算。这是相关的:。如果我的评论没有帮助,请考虑另一个问题。
fit.svm$pred %>%
  filter(sigma == fit.svm$bestTune$sigma & C == fit.svm$bestTune$C) %>%
  write.csv("predictions.csv")