我一直在 r 中使用包 rgp(遗传编程)来预测泰坦尼克号上的生存。输入数据框 train 是来自 Kaggle 的训练数据,其中 Sex 变量对女性更改为 0,对男性更改为 1。鉴于此,代码是:
fs <- functionSet("+", "-", "*", "exp", "sin", "cos")
ivs <- inputVariableSet("Sex")
cfs <- constantFactorySet(function() rnorm(1))
ff <- function(f) {
err <- rmse(as.numeric(f(train$Sex)), as.numeric(train$Survived))
if (is.na(err)) return(1e12) else return(err)
}
set.seed(42)
gp <- geneticProgramming(functionSet = fs,
inputVariables = ivs,
constantSet = cfs,
fitnessFunction = ff,
stopCondition = makeTimeStopCondition(60),
verbose = FALSE)
问题是遗传编程功能经常输出“产生的NaN”。事实上,如果我运行它足够长的时间(例如过夜),输出足以挂起 r 和 rstudio。(我要运行的实际代码涉及更多,并且“生成的 NaNs”打印得更频繁,但是这个缩短的版本足以说明问题。)
我想抑制遗传编程的所有输出。verbose = FALSE 选项不解决“产生的 NaN”输出。
我尝试过使用 capture.output、sink 和 invisible。我在 R 降价单元格中尝试了 echo = FALSE。一切都无济于事。我原以为 sink("/dev/null") 会解决问题,但事实并非如此。
这个输出来自哪里,如果通常的方法不起作用,我该如何抑制它?
非常感谢。