R 如何使用插入符号包评估多个模型?

R 如何使用插入符号包评估多个模型?,r,neural-network,r-caret,nnet,R,Neural Network,R Caret,Nnet,我想使用CARET和nnet包来预测泰坦尼克号数据集的生存/死亡。我想适合20个神经网络,每个神经网络有1个隐藏节点,2个隐藏节点。。。20个隐藏节点。通常,CARET包将根据训练数据选择最佳模型,但我希望选取20个网络中的每一个,并将其应用于测试数据。如何保存每个模型,以便根据测试数据集对其进行测试?插入符号包中是否有可以提供帮助的方法?不是直接的,不是,但应该是可能的。您需要修改fit函数以将它们保存到文件中。在fit函数中,您将知道调整参数值,但不知道构建模型时使用的重采样 下面是一个例子

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

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

下面是一个例子,你将如何着手完成这一点,这来自于一个问题的答案

#从现有模型类型复制所有模型结构信息
cust.mdl
# 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)
}