R randomForest für die Einstufung
Ich versuche zu tun, Klassifikation mit randomForest, aber ich bin immer wieder eine Fehlermeldung, für die es anscheinend keine offensichtliche Lösung (randomForest hat gut funktioniert für mich tun, regression in die Vergangenheit). Habe ich eingefügt, mein code unten. 'Erfolg' ist ein Faktor, der Sie alle abhängigen Variablen sind zahlen. Irgendwelche Vorschläge, wie laufen diese Einstufung richtig?
> rf_model<-randomForest(success~.,data=data.train,xtest=data.test[,2:9],ytest=data.test[,1],importance=TRUE,proximity=TRUE)
Error in randomForest.default(m, y, ...) :
NA/NaN/Inf in foreign function call (arg 1)
auch, hier ein Auszug aus den Datensatz:
Kopf(Daten)
success duration goal reward_count updates_count comments_count backers_count min_reward_level max_reward_level
True 20.00000 1500 10 14 2 68 1 1000
True 30.00000 3000 10 4 3 48 5 1000
True 24.40323 14000 23 6 10 540 5 1250
True 31.95833 30000 9 17 7 173 1 10000
True 28.13211 4000 10 23 97 2936 10 550
True 30.00000 6000 16 16 130 2043 25 500
- Ohne einen vollständig reproduzierbaren Beispiel, keine. Zumindest würde ich (1) überprüfen, dass es keine NA-Werte in Ihren Daten, und (2) führen Sie
traceback()
zu sehen, wenn Sie einige weitere Informationen, wo der Fehler Auftritt. - versuchen, sich zu ändern "Erfolg" Werten, Arten, Namen anstelle von "True". können, wie Sie uns die Ausgabe von srt(Daten) ??
- Es scheint, dass Sie bereits akzeptiert eine Antwort; ich lief in dieser und festgestellt, dass für die Klassifizierung, es war wegen meiner Reaktion variable der
chr
Klasse. Entweder tundata$var <- as.factor(data$var)
oder die Vorhersage mitrandomForest(as.factor(data$var) ~ ., ...)
Feste das für mich. - Verwenden
lapply(your_data, class)
und prüfen, ob es Beobachtungen der Klasse "Zeichen"
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie versucht, die regression auf die gleichen Daten? wenn nicht, dann check-out für "Inf" - Werte in Ihre Daten und versuchen, Sie zu entfernen, wenn überhaupt, nach dem entfernen NAs und NaNs.
Finden Sie nützliche Informationen zum entfernen Inf von unten,
R gibt es einen Weg zu finden, Inf/-Inf-Werte?
Beispiel,
So, bitte überprüfen Sie Ihre Daten sehr sorgfältig.
Zusätzlich: Warnmeldung:
In randomForest.Standard - (m, y, ...) :
Die Antwort hat fünf oder weniger eindeutige Werte. Sind Sie sicher, dass Sie tun möchten regression?
Abgesehen von den offensichtlichen Fakten rund um das Vorhandensein von NAs usw. dieser Fehler ist fast immer verursacht durch das Vorhandensein von Charakter-feature-Typen in der Datenbank. Der Weg, dies zu verstehen ist, indem Sie überlegen, was random forest wirklich tut. Sie sind Partitionierung des Datensatzes Merkmal für Merkmal. Also wenn man von der Funktion ist ein Charakter-Vektor, wie würden Sie die partition, die die Daten eingestellt? Sie benötigen Kategorien, um eine Daten-partition. Wie viele 'Männlich' vs. 'weiblich' - Kategorien...
Für numerische Funktionen (wie z.B. Alter, oder der Preis, können Sie Kategorien erstellen, indem Sie giesst; größer als bestimmten Alter, kleiner als bestimmten Preis usw. Sie können das nicht mit rein Charakter Eigenschaften. Daher müssen Sie diese als Faktoren in Ihre Daten-set.
In der Regel gibt es 2 Haupt-Gründe, warum du diese Fehlermeldung erhalten:
2.Wenn die Daten enthält schlechte Werte, Anwendung von random-forest wird auch dieser Fehler generiert.Der Kopf zeigt auch nicht die Ausreißer-Werte. Für ex:
Nun die Anwendung randomForest auf df verursachen den gleichen Fehler:
Lösung: Ermöglicht das identifizieren der schlechten Werte in der df. Wie oben geschrieben ist.finite () - Methode wird überprüft, ob der input Vektor enthält die richtige endliche Werte oder nicht. Für ex:
Nun identifizieren Sie die Spalten, die die schlechten Werte in der Daten-frame, und zählen Sie Sie.
Können fallen diese Sätze-und nehmen Sie nehmen Sie einfach die gute Aufzeichnungen :
Und führen Sie die randomForest wieder:
Es ist, weil es mehr als 32 Ebenen für eine Ihrer Variablen.
Ebenen bedeutet verschiedene Werte einer Variablen.
Entfernen Sie die variable und versuchen Sie es erneut.
Einfach durch die Umwandlung von allen Spalten-Faktor, können Sie diesen Fehler vermeiden.
Auch ich Stand vor diesem Fehler.
Die Spalte,die speziell die nicht immer umgewandelt in Faktor. Ich schrieb speziell als.Faktor für, die.
Und endlich, mein code funktioniert.