Pregunta

Tengo una SVM en I y ahora me gustaría trazar el espacio de clasificación para esta máquina. He encontrado algunos ejemplos en Internet, pero me parece que no puede hacer sentido de ellos.

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 puedo conseguir el comando plot para trabajar. Me gustaría tener un gráfico que algo como esto http://bm2.genes.nig.ac.jp/RGM2/R_current/library/e1071/man/images/plot.svm_001.png

¿Fue útil?

Solución

En primer lugar, la función plot.svm supone que los datos varía a través de dos dimensiones. Los datos que ha utilizado en su ejemplo sólo es unidimensional y por lo que la frontera de decisión tendría que ser trazada en una línea, que no es compatible. En segundo lugar, la función parece necesitar una trama de datos como entrada y se 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)

Otros consejos

Como alternativa, se puede utilizar el href="http://cran.r-project.org/web/packages/kernlab/index.html" rel="noreferrer"> kernlab paquete :

library(kernlab)

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