我想使用CARET
andnnet
包来预测泰坦尼克号数据集的生存/死亡。我想拟合 20 个神经网络,每个神经网络有 1 个隐藏节点、2 个隐藏节点、...... 20 个隐藏节点。通常,该CARET
程序包会根据训练数据选择最佳模型,但我想获取 20 个网络中的每一个,并将它们中的每一个应用于测试数据。如何保存每个模型以便根据测试数据集对其进行测试?CARET 包中是否有可以提供帮助的方法?
问问题
758 次
1 回答
3
不直接,不,但应该是可能的。您需要修改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)
}
于 2015-08-05T18:01:57.380 回答