【发布时间】:2019-11-09 18:19:24
【问题描述】:
我有以下适用于我的代码段,我得到了模型结果:
library(base)
library(caret)
library(tidyverse)
dataset <- read_csv("https://gist.githubusercontent.com/dmpe/bfe07a29c7fc1e3a70d0522956d8e4a9/raw/7ea71f7432302bb78e58348fede926142ade6992/pima-indians-diabetes.csv", col_names=FALSE)
X = dataset[, 1:8]
Y = as.factor(ifelse(dataset$X9 == 1, 'diabetes', 'nondiabetes'))
set.seed(88)
nfolds <- 3
cvIndex <- createFolds(Y, nfolds, returnTrain = T)
fit.control <- trainControl(method="cv",
index=cvIndex,
number=nfolds,
classProbs=TRUE,
savePredictions=TRUE,
verboseIter=TRUE,
summaryFunction=twoClassSummary,
allowParallel=FALSE)
model <- caret::train(X, Y,
method = "svmLinear",
trControl = fit.control,
preProcess=c("center","scale"),
tuneLength=10)
使用它,我可以以model$finalModel 的身份访问最终模型,但是,在这种情况下,我实际上不想拥有一个最终模型,而是拥有 3 个模型,因为我有 3 倍。所以,我想在第一次折叠后得到训练好的模型,然后在第二次折叠后,最后在第三次折叠后,这对应于实际的最终模型。任何想法如何在 R 中实现这一目标?请注意,caret 的使用并不严格,如果您可以使用mlr,也欢迎使用。
【问题讨论】:
-
你想做合奏还是什么?最终目标是什么?
-
@NelsonGon 我看到了这个问题,它似乎提供了一种访问索引的方法,但是我想要模型。场景是我需要绘制 PDP,并且我被要求做 k 次,所以在每次折叠之后。因此,我想在第一次折叠后得到训练好的模型,绘制 PDP,然后在第二次折叠后,绘制 PDP,依此类推。
-
mlr包允许此功能,check it out - 模型参数。 -
@missuse 我试图查看 mlr,但无法理解这是如何完成的,您能否提供最少的代码来说明在 m 场景中的情况?
标签: r machine-learning cross-validation r-caret