Я пытаюсь оценить и составить алгоритмы обучения, используя Перекрестная проверка временных рядов , используя caret и caretEnsemble.caret напрямую поддерживает это с помощью method = "timeslice" - однако, набор Caret не
caretList в настоящее время не знает, как обрабатывать метод перекрестной проверки = 'timeslice'.Пожалуйста, укажите trControl $ index вручную
, и представляется возможным создать индексы вручную, используя
createTimeSlices
, однако это даетследующая ошибка в минимальном рабочем примере ниже
Ошибка: Остановка Дополнительно: Предупреждение: в nominalTrainWorkflow (x = x, y = y, wts = weights, info = trainInfo,: там отсутствовализначения в измеренных показателях производительности.
library(tidyverse)
library(caret)
library(caretEnsemble)
dfml=data.frame(date=seq(as.Date("2014/09/04"), by = "day", length.out = 1090),y=rnorm(1090),x=rnorm(1090))
index=createTimeSlices(dfml$y,365,horizon = 1,fixedWindow = TRUE)
n=726
seeds <- vector(mode = "list", length = n) # creates an empty vector containing lists
for(i in 1:(n-1)){seeds[[i]] <- sample.int(1000, 3) }
seeds[[n]] <- sample.int(1000, 1)
myIndexControl <- trainControl(method = "cv",
allowParallel = TRUE,
seeds = seeds,index=index$train,indexOut=index$test)
alg_list <- c("glmnet", "gbm", "lm")
multi_mod <- caretList(y ~ . ,
data = dfml,
trControl = myIndexControl,
methodList = alg_list,
family="gaussian",
metric = "RMSE", seeds=seeds)
Будем весьма благодарны за любые предложения или обходные пути. Таким образом можно настроить одну модель
glmnet.fit =train( y~ .,
data = df,
method = "glmnet",
verbose=FALSE, trControl = myIndexControl,seeds=seeds,tuneLength.num=2,linout = TRUE)