【问题标题】:package rgp in r gives "NaNs produced" output that cannot be suppressedr 中的包 rgp 给出了无法抑制的“产生的 NaN”输出
【发布时间】:2016-12-26 14:21:36
【问题描述】:

我一直在 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)

问题是genericProgramming 函数经常输出“NaNs 产生”。事实上,如果我运行它足够长的时间(例如一夜之间),输出足以挂起 r 和 rstudio。 (我要运行的实际代码涉及更多,并且“生成的 NaNs”打印得更频繁,但是这个缩短的版本足以说明问题。)

我想禁止从基因编程的所有输出。 verbose = FALSE 选项不解决“NaN 生成”输出。

我尝试过使用 capture.output、sink 和 invisible。我在 R 降价单元格中尝试了 echo = FALSE。一切都无济于事。我原以为 sink("/dev/null") 会解决问题,但事实并非如此。

这个输出来自哪里,如果通常的方法不起作用,我该如何抑制它?

非常感谢。

【问题讨论】:

    标签: r sink rgp


    【解决方案1】:

    在您的函数集中,删除“sin”和“cos”。当这些被删除时,不会产生 NaN。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-15
      • 2018-08-20
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      相关资源
      最近更新 更多