R: Zufällige Gesamtstruktur, die NaN / Inf im Fehler "fremder Funktionsaufruf" trotz fehlender NaNs im Datensatz auslöst [geschlossen]

29

Ich verwende Caret, um eine kreuzvalidierte zufällige Gesamtstruktur über ein Dataset auszuführen. Die Y-Variable ist ein Faktor. In meinem Datensatz befinden sich keine NaNs, Infs oder NAs. Allerdings bekomme ich, wenn ich den zufälligen Wald laufen lasse

Error in randomForest.default(m, y, ...) : 
  NA/NaN/Inf in foreign function call (arg 1)
In addition: There were 28 warnings (use warnings() to see them)
Warning messages:
1: In data.matrix(x) : NAs introduced by coercion
2: In data.matrix(x) : NAs introduced by coercion
3: In data.matrix(x) : NAs introduced by coercion
4: In data.matrix(x) : NAs introduced by coercion

Hat jemand eine Idee, ob dieser Fehler durch die durch Zwang eingeführten NAs verursacht wird? Wenn ja, wie kann ich solchen Zwang verhindern?

Info5ek
quelle

Antworten:

36

Ihr Trainingsset muss einige Features mit der Klasse 'char' enthalten.

Bitte prüfen Sie das

> a <- c("1", "2",letters[1:5], "3")
> as.numeric(a)
[1]  1  2 NA NA NA NA NA  3
Warning message:
NAs introduced by coercion 
Pankaj Sharma
quelle
Nur um hinzuzufügen, wenn das Merkmal tatsächlich kategorisiert ist, kann es dennoch durch Konvertieren in einen Faktor, z. blah <-as.factor (blah)
P.Windridge
14

Wahrscheinlich haben Sie einige Zeichenvariablen in Ihrem Datenrahmen.

Konvertieren Sie alle Zeichenvariablen in einen Faktor in einer Zeile:

library(dplyr) data_fac=data_char %>% mutate_if(is.character, as.factor)

pablo_sci
quelle
2
Ich hatte nicht daran gedacht, mutate_if()dafür zu verwenden ... danke!
Andrew Brēza
3

Wie in der Warnung gezeigt, gab es 28 Fehler, die zufällig die Anzahl der Spalten mit Zeichendatentypen ("chr") waren. Erzwingen, dass diese Spalten den Faktoren entsprechen, die für den Beginn des Laufs zulässig sind.

Info5ek
quelle