r中的包rgp给出了生成的NaNs"无法抑制的输出

时间:2016-12-26 14:21:37

标签: r sink rgp

我一直在r中使用包rgp(遗传编程)来预测泰坦尼克号的生存。输入数据帧train是training data from 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)

问题是遗传编程功能输出&#34; NaNs产生&#34;经常。事实上,如果我运行足够长的时间(例如一夜之间),输出足以挂起r和rstudio。 (我想要运行的实际代码涉及更多,并且&#34; NaNs生成&#34;更频繁地打印,但这个缩短的版本足以显示问题。)

我想抑制来自GeneticProgramming的所有输出。 verbose = FALSE选项并不能解决生成的&#34; NaNs&#34;输出

我尝试过使用capture.output,sink和invisible。我在R markdown单元格中尝试了echo = FALSE。一切都无济于事。我本以为沉(&#34; / dev / null&#34;)可以解决问题,但它没有。

此输出来自何处,如果通常的方法不起作用,我该如何抑制它?

非常感谢。

1 个答案:

答案 0 :(得分:0)

在你的functionSet中,删除&#34; sin&#34;和&#34; cos&#34;。当这些被去除时,不会产生NaN。