【发布时间】:2019-09-28 12:50:29
【问题描述】:
我正在创建径向 SVM 分类模型,我将对其执行 5 倍 CV 并对其进行调整。我已经看到其他人是如何做到的here 和followed these instructions。但是,我的代码不想实现我的调整网格。另外,我不明白为什么在显式训练模型时无法获得准确率或 F1 值。
5倍CV
library(caret)
set.seed(500)
ctrl <- trainControl(method = "repeatedcv",
number = 5,
repeats = 3,
classProb=T,
summaryFunction = twoClassSummary
)
sigma<-c(2^-15,2^-13,2^-11,2^-9,2^-7,2^-5,2^-3,2^-1,2^1,2^2,2^3)
C<-c(2^-5,2^-3,2^-1,2^1,2^2,2^3,2^5,2^7,2^9,2^11,2^13)
tuninggrid<-data.frame(expand.grid(sigma,C))
mod <- train(x = iris[-5], y=iris$Species,
method = "svmRadial",
trControl = ctrl,
metric=c('ROC'),
tunegrid=tuninggrid
结果只是 sigma 保持不变。为什么它不使用我的调整网格?
其次,当我将指标从 'ROC' 调整为 'Accuracy' 时,它说准确度不可用。我理解这是因为我在 trainControl. 中的 summaryFunction ,如果我删除它,那么我可以获得准确度,但不能获得 ROC。最终,我想要一个 F1 值,但我找不到这方面的文档。我怎么写东西同时给我呢?
最后,train() 的输出。要获得权重,它只是使用 mod$finalModel@coef 对吗?
【问题讨论】:
-
乍一看你有没有看过str(mod)和summary(mod)?
-
另外,我记得这是如何工作的,您要求将 CV 完成 5 次,而不是您创建了 5-fold CV。
-
哦。那么你会如何解决这个问题呢?
-
如果您没有得到答案,我稍后会尝试提供更多详细信息。但是,如果您搜索相关术语,您会发现在线存在大量插入符号文档。老实说,为了你自己的熏陶,最好的程序。
-
我建议您阅读this,您的所有问题都应该得到解答。如果仍有疑问,请发布问题更新。
标签: r svm cross-validation r-caret