2016-12-26 1 views
0

Ich habe Paket rgp (genetische Programmierung) in r verwendet, um das Überleben auf der Titanic vorherzusagen. Der Eingabedatenrahmen, Train, ist der training data from Kaggle mit der Sex-Variable, die für Frauen auf 0 und für Männer auf 1 geändert wird. Angesichts dieser Tatsache ist der Code:Paket rgp in r gibt "NaNs produziert" Ausgabe, die nicht unterdrückt werden kann

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) 

Das Problem ist die geneticProgramming Funktionsausgänge „NaNs erzeugt“ häufig. In der Tat ist die Ausgabe genug, um r und rudio aufzuhängen, wenn ich es lange genug (z. B. über Nacht) laufen lasse. (Der eigentliche Code, den ich ausführen möchte, ist komplizierter und "NaNs produced" druckt viel häufiger, aber diese verkürzte Version reicht aus, um das Problem zu zeigen.)

Ich möchte alle Ausgaben von geneticProgramming unterdrücken. Die Option verbose = FALSE adressiert nicht die Ausgabe "NaNs produced".

Ich habe versucht mit capture.output, sinken und unsichtbar. Ich habe versucht, Echo = FALSE in einer R Markdown-Zelle. Alles vergebens. Ich hätte gedacht, sinken ("/ dev/null") würde das Problem lösen, aber es tut es nicht.

Woher kommt diese Ausgabe, und wie kann ich sie unterdrücken, wenn die üblichen Methoden nicht funktionieren?

Vielen Dank.

Antwort

0

Entfernen Sie in Ihrem functionSet "sin" und "cos". Wenn diese entfernt werden, werden die NaNs nicht erzeugt.

Verwandte Themen