2009-07-17 9 views
11

Ich habe eine SVM in R und ich möchte jetzt den Klassifizierungsraum für diese Maschine plotten. Ich habe einige Beispiele im Internet gefunden, aber ich kann keinen Sinn daraus machen.Wie zeichne ich ein Klassifikationsdiagramm einer SVM in R

Mein R Skript ist wie folgt:

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) 

ich nicht der Plotbefehl zu arbeiten bekommen. Ich möchte ein Diagramm so etwas wie http://bm2.genes.nig.ac.jp/RGM2/R_current/library/e1071/man/images/plot.svm_001.png

Antwort

18

Zuerst die plot.svm Funktion nimmt an, dass die Daten über zwei Dimensionen variiert. Die Daten, die Sie in Ihrem Beispiel verwendet haben, sind nur eindimensional. Daher müsste die Entscheidungsgrenze auf einer Linie dargestellt werden, die nicht unterstützt wird. Zweitens scheint die Funktion einen Datenrahmen als Eingabe zu benötigen und Sie arbeiten mit Vektoren.

Dies sollte funktionieren ...

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

Danke, es scheint, dass ich mit dem Operator ~ vertraut sein müssen, die der Formel bezieht. Ich hatte angenommen, dass es bei einem SVM-Objekt in der Lage wäre, seine Klassifizierungsräume ohne weitere Richtung zu rendern. –

+0

Kann mir jemand sagen, welches Paket ich installieren muss, um svm in R zu verwenden? – sunqiang

+1

Das Paket ist e1071. Ich habe den Befehl hinzugefügt, um das Paket in den obigen Code zu laden – Stompchicken

13

Alternativ können Sie die kernlab Paket verwenden können:

library(kernlab) 

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