2009-07-17 5 views
11

J'ai un SVM dans R et je voudrais maintenant tracer l'espace de classification pour cette machine. J'ai trouvé quelques exemples sur Internet, mais je n'arrive pas à les comprendre.Comment tracer un graphe de classification d'un SVM dans R

Mon script R est la suivante:

library(e1071) 
day_of_week <- c(0,1,2,3,4,5,6) 
holiday <- factor(c(T, F, F, F, F, F, T)) 
model <- svm(day_of_week, holiday) 
plot(model, day_of_week, holiday) 

je ne peux pas obtenir la commande de complot pour travailler. Je voudrais un graphique quelque chose comme ça http://bm2.genes.nig.ac.jp/RGM2/R_current/library/e1071/man/images/plot.svm_001.png

Répondre

18

Tout d'abord, la fonction plot.svm suppose que les données varient selon deux dimensions. Les données que vous avez utilisées dans votre exemple sont uniquement unidimensionnelles et la limite de décision doit donc être tracée sur une ligne, ce qui n'est pas pris en charge. Deuxièmement, la fonction semble avoir besoin d'une trame de données en entrée et vous travaillez avec des vecteurs.

Cela devrait fonctionner ...

library(e1071) 

day = c(0,1,2,3,4,5,6) 
weather = c(1,0,0,0,0,0,0) 
happy = factor(c(T,F,F,F,F,F,F)) 

d = data.frame(day=day, weather=weather, happy=happy) 
model = svm(happy ~ day + weather, data = d) 
plot(model, d) 
+0

Merci, il semble que je dois être familier avec l'opérateur ~ qui se rapporte à la formule. J'avais supposé qu'avec un objet svm, il serait capable de rendre ses espaces de classification sans autre direction. –

+0

Quelqu'un pourrait-il me dire quel paquet j'ai besoin d'installer pour utiliser svm dans R? – sunqiang

+1

Le paquet est e1071. J'ai ajouté la commande pour charger le paquet dans le code ci-dessus – Stompchicken

13

Vous pouvez également utiliser le package kernlab:

library(kernlab) 

model.ksvm = ksvm(happy ~ day + weather, data = d, type="C-svc") 
plot(model.ksvm, data=d) 
Questions connexes