我正在尝试在同一数据上测试不同回归/分类算法(即svm,nnet,rpart,randomForest,naiveBayes等)的结果,以查看哪种效果更好。但是我需要使我的代码尽可能简短。为了测试所有算法,我想使用包mclapply()
的单个multicore
调用来运行它们:
invisible(lapply(c("party","nnet","caret","klaR","randomForest","e1071","rpart",
"multicore"), require, character.only = T))
algorithms <- c(knn3, NaiveBayes, nnet, ctree, randomForest, svm, naiveBayes, rpart)
data(iris)
model <- mclapply(algorithms, function(alg) alg(Species ~ ., iris))
问题在于某些算法需要额外的参数,即
nnet()
需要设置参数size
。当然可以通过几个if,else
命令解决此问题,但是有没有更简单的解决方案? 最佳答案
您可以做的一件事是将algorithms
中需要附加参数的部分替换为部分函数,例如
algorithms <- c(knn3, ctree, function(...) nnet(..., size=2))