2009-07-17 25 views
11

Tengo un SVM en R y ahora me gustaría trazar el espacio de clasificación para esta máquina. He encontrado algunos ejemplos en Internet, pero parece que no los entiendo.Cómo trazar un gráfico de clasificación de un SVM en R

Mi script R es el siguiente:

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) 

no puede obtener el comando plot para trabajar. Me gustaría un gráfico como este http://bm2.genes.nig.ac.jp/RGM2/R_current/library/e1071/man/images/plot.svm_001.png

Respuesta

18

En primer lugar, la función plot.svm asume que los datos varían en dos dimensiones. Los datos que ha utilizado en su ejemplo son solo unidimensionales y, por lo tanto, el límite de decisión debería trazarse en una línea, que no es compatible. En segundo lugar, la función parece necesitar un marco de datos como entrada y usted está trabajando con vectores.

Esto debería funcionar ...

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

Gracias, parece que tengo que estar familiarizado con el operador ~ lo que se refiere a la fórmula. Había supuesto que, dado un objeto svm, podría representar sus espacios de clasificación sin más indicaciones. –

+0

¿Podría alguien decirme qué paquete necesito instalar para usar svm en R? – sunqiang

+1

El paquete es e1071. He agregado el comando para cargar el paquete al código anterior – Stompchicken

13

Alternativamente, se puede utilizar el paquete de kernlab:

library(kernlab) 

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