r - 如何使用 CARET 包评估多个模型?

标签 r neural-network r-caret nnet

我想使用 CARETnnet 包来预测泰坦尼克号数据集的生存/死亡。我想拟合 20 个神经网络,每个神经网络有 1 个隐藏节点、2 个隐藏节点……20 个隐藏节点。通常,CARET 包会根据训练数据选择最佳模型,但我想采用 20 个网络中的每一个,并将它们分别应用于测试数据。如何保存每个模型以便根据测试数据集对其进行测试? CARET 包中是否有可以提供帮助的方法?

最佳答案

不直接,不,但应该是可能的。您需要修改 fit 函数以将它们保存到文件中。在 fit 函数中,您会知道调整参数值,但不知道构建模型时使用的重新采样内容。

以下是如何实现此目的的示例,该示例来自 very similar question 上的答案。 。

# 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)
}

关于r - 如何使用 CARET 包评估多个模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31836215/

相关文章:

r - R Markdown 中的动画

r - 如何将组行 append 到数据框中

r - 在集群上运行时插入符号中发生错误

r - Shiny 的应用程序产生错误 : "arguments imply differing number of rows: 0, 1"

R Blotter 演示在 Linux 下无法工作

r - 如果矩阵包含任何NA,如何返回TRUE?

tensorflow - TensorFlow 中 logits 一词的含义是什么?

python - 如何让one-hot数据与非one-hot数据兼容?

c++ - C++ 中 NaN 的异常原因?极限接近零会导致 NaN 吗?

r - 使用 R 理解插入符号中的网格