我希望在相同的数据上测试不同回归/分类算法(即 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))
关于使用单个命令运行具有不同参数的函数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15690855/