2016-04-06 10 views
0

Ich benutze das Paket e1071 in R, um ein Ein-Klasse-SVM-Modell zu bauen. Ich konnte es modellieren und das Modell drucken, aber ich habe Schwierigkeiten beim Plotten.wie SVM in einer Klasse in R plotten?

Ich habe diese link verfolgt, und auch this, die den Iris-Datensatz verwendet, aber alle SVM-Beispiele verwenden C-Klassifizierung.

library(e1071) 

day = c(0,1,2,3,4,5,6) 
weather = c(6,5,4,3,2,1,0) #on the example, it was: c(1,0,0,0,0,0,0) 
happy = factor(c(T,T,T,T,T,T,T)) #on the example it was: 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, type='one-classification') #on the example it was: model = svm(happy ~ day + weather, data = d) 

plot(model, d) 

Da es eine Klasse ist, änderte ich die Faktoren zum gleichen Label. Es gibt den folgenden Fehler:

Error in rect(0, levels[-length(levels)], 1, levels[-1L], col = col) 
    cannot mix zero-length and non-zero-length coordinates 
In addition: Warning messages: 
1: package 'e1071' was built under R version 3.2.3 
2: In Ops.factor(yorig, ret$fitted) : '-' not meaningful for factors 

Ich verwende R Version 3.2.2 (2015-08-14) (Windows).

Wie kann ich dieses Modell plotten?

Vielen Dank

+0

Benötigt nicht eine Klassifizierung den 'nu' Parameter? – sebastianmm

+0

Hallo @ Sebastian M. Müller. Ja, tut es, aber wenn Sie nicht setzen, nimmt der Standardwert 0,5 –

+0

haben Sie versucht, nur 'Plot (Modell)'? – lejlot

Antwort

0

danke. Ich denke, this answer funktioniert. Wenn Sie in der Lage sind, schneller für 2d zu finden, teilen Sie es bitte mit. Ansonsten ist das großartig.

Es zeigt ein 3D-Diagramm für 3 Merkmalswerte. Es zeichnet auch die Hyperebene und Sie können sogar mit dem nu-Wert herumspielen und die Zunahme oder Abnahme des Randes sehen. Sehr cool ..