prédire.svm ne permet pas de prévoir de nouvelles données
malheureusement j'ai des problèmes avec predict() dans l'exemple simple suivant:
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)
Le résultat est comme suit:
> predict(mod, newdata = test)
1 2 3 4 <NA> <NA> <NA> <NA> <NA> <NA>
0 0 0 0 0 1 1 1 1 1
Quelqu'un peut-il expliquer pourquoi prévoir() ne donne que les valeurs ajustées de la formation de l'échantillon (x,y) et ne se soucie pas de test sur les données?
Merci beaucoup pour votre aide!
Richard
ps: à l'aide de test <- c(11:25) donne "Erreur dans les noms(ret2) <- rowns : "noms" de l'attribut [15] doit être de la même longueur que le vecteur [10]"
OriginalL'auteur Richard | 2010-12-16
Vous devez vous connecter pour publier un commentaire.
Il semble que ce est parce que vous avez un mauvais usage de la formule de l'interface de
svm()
. Normalement, on fournit une trame de données ou tout autre objet similaire, au sein de laquelle les variables dans la formule sont recherchés. Il n'a généralement pas d'importance si vous ne le faites pas, même si elle n'est pas le plus pratique, mais lorsque vous voulez prévoir, pas insérer des variables dans un bloc de données, vous reçoit dans un désordre. La raison pour laquelle il renvoie les données d'apprentissage est parce que vous ne fournissez pasnewdata
un objet avec un composant nomméx
. Par conséquent, il ne peut pas trouver les nouvelles donnéesx
donc retourne les valeurs ajustées. Ce qui est commun pour la plupart des Rpredict
méthodes que je connais.La solution est alors de i) mettre vos données d'entraînement dans un bloc de données et de passer
svm
ce que ledata
argument, et ii) la fourniture d'un nouveau bloc de données contenantx
(à partir detest
) àpredict()
. E. g.:OriginalL'auteur Gavin Simpson
Vous avez besoin newdata à être de la même forme, c'est à dire en utilisant un ensemble de données.cadre:
Par la voie, c'est également montré à la page d'aide pour
svm()
:Donc, en somme, l'utilisation de la formule de l'interface et la fourniture de données.image --- c'est la façon dont essentiellement tous fonctions de modélisation dans la R du travail.
OriginalL'auteur Dirk Eddelbuettel