Vorhersagen.svm nicht Vorhersagen neuer Daten
leider habe ich Probleme mit predict() im folgenden an einem einfachen Beispiel:
library(e1071)
x <- c(1:10)
y <- c(0,0,0,0,1,0,1,1,1,1)
test <- c(11:15)
mod <- svm(y ~ x, kernel = "linear", gamma = 1, cost = 2, type="C-classification")
predict(mod, newdata = test)
Das Ergebnis ist wie folgt:
> predict(mod, newdata = test)
1 2 3 4 <NA> <NA> <NA> <NA> <NA> <NA>
0 0 0 0 0 1 1 1 1 1
Kann jemand erklären, warum predict() gibt nur den gefitteten Werten der Trainings-Stichprobe (x,y) und kümmert sich nicht um die test-Daten?
Danken Ihnen sehr für Ihre Hilfe!
Richard
- ps: die Verwendung von test <- c(11:25) gibt "Fehler im Namen(ret2) <- rowns : 'Namen' Attribut [15], muss die gleiche Länge wie der Vektor [10]"
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sieht es aus wie das ist, weil Sie den Missbrauch der Formel-Schnittstelle
svm()
. Normalerweise versorgt ein Daten-frame oder ähnliches Objekt, in dem die Variablen in der Formel gesucht. Es in der Regel egal, wenn Sie dies nicht tun, auch wenn es nicht das beste, aber wenn Sie möchten, um vorherzusagen, nicht das einfügen von Variablen in einem data-frame wird Sie in einem richtigen Durcheinander. Der Grund, es gibt den Trainingsdaten ist, weil Sie nicht bietennewdata
ein Objekt mit einer Komponente namensx
in es. Daher kann es nicht finden, werden die neuen Datenx
so kehrt die eingebauten Werte. Dies ist üblich für die meisten Rpredict
Methoden, die ich kenne.Die Lösung ist dann zu i) stellen Sie Ihre Trainingsdaten in einem Daten-frame und pass
svm
dies alsdata
argument, und ii) liefern neue Daten-frame mitx
(austest
) zupredict()
. E. g.:Müssen Sie newdata werden von der gleichen form, dh mit einem Daten.Rahmen hilft:
Durch die Art und Weise, dies zeigen auch die Hilfe-Seite für
svm()
:Also in Summe, verwenden Sie die Formel-Schnittstelle und liefern die Daten.Rahmen --- das ist, wie im wesentlichen alle Modellierung von Funktionen in R arbeiten.