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?

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 

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)


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.