使用单个命令运行具有不同参数的函数列表

标签 r classification multicore svm nnet

我希望在相同的数据上测试不同回归/分类算法(即 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/

相关文章:

machine-learning - 卷积神经网络会受到梯度消失的影响吗?

multithreading - TPL 有何过人之处

r - 为每个组替换异常值

r - 如何在绘图 R 图表中改变不透明度

R/ggplot2 : use literal strings on parse()

matlab - matlab中的最小二乘线性分类器

r - 将字符串切成固定宽度字符元素的向量

java - 如何提高weka中SMO分类器的性能?

java - Hadoop:堆空间和gc问题

perl - 如何让我的 Perl 脚本为子进程使用多个内核?