Как оценить несколько моделей с помощью пакета CARET?

Я хочу использовать пакеты CARET и nnet, чтобы предсказать выживание/смерть для набора данных Титаника. Я хотел бы разместить 20 нейронных сетей с 1 скрытым узлом, 2 скрытыми узлами, ... 20 скрытыми узлами. Обычно пакет CARET выбирает лучшую модель на основе обучающих данных, но я хочу взять каждую из 20 сетей и применить каждую из них к тестовым данным. Как я могу сохранить каждую из моделей, чтобы проверить их на тестовом наборе данных? Есть ли метод в пакете CARET, который может помочь?


person mmmmmmmmmm    schedule 05.08.2015    source источник


Ответы (1)


Не напрямую, нет, но это должно быть возможно. Вам нужно будет изменить функциюfit, чтобы сохранить их в файл. Внутри функции fit вы бы знали значение параметра настройки, но не то, с какой передискретизацией была построена модель.

Вот пример того, как вы могли бы это сделать, который взят из ответа на очень похожий вопрос.

# Copy all model structure info from existing model type
cust.mdl <- getModelInfo("rf", regex=FALSE)[[1]]

# Override fit function so that we can save the iteration
cust.mdl$fit <- function(x=x, y=y, wts=wts, param=param, lev=lev, last=last, classProbs=classProbs, ...) {
  # Dont save the final pass (dont train the final model across the entire training set)
  if(last == TRUE) return(NULL) 

  # Fit the model
  fit.obj <- getModelInfo("rf", regex=FALSE)[[1]]$fit(x, y, wts, param, lev, last, classProbs, ...)

  # Create an object with data to save and save it
  fit.data <- list(resample=rownames(x),
                   mdl=fit.obj,
                   #x, y, wts,
                   param=param, lev=lev, last=last, classProbs=classProbs, 
                   other=list(...))

  # Create a string representing the tuning params
  param.str <- paste(lapply(1:ncol(param), function(x) {
                     paste0(names(param)[x], param[1,x])
                    }), collapse="-")

  save(fit.data, file=paste0("rf_modeliter_", sample(1000:9999,1), "_", param.str, ".RData"))
  return (fit.obj)
}
person scribbles    schedule 05.08.2015