2014-09-08 17 views
7

Sto provando a tracciare il mio modello svm.Errore nel grafico, mancante della formula

library(foreign) 
library(e1071) 

x <- read.arff("contact-lenses.arff") 
#alt: x <- read.arff("http://storm.cis.fordham.edu/~gweiss/data-mining/weka-data/contact-lenses.arff") 
model <- svm(`contact-lenses` ~ . , data = x, type = "C-classification", kernel = "linear") 

L'obiettivo di lenti arff è il file di dati incorporato in weka.

Tuttavia, ora ho riscontrato un errore nel tentativo di tracciare il modello.

risposta

12

Il problema è che nel modello sono presenti più covariate. Il plot() verrà eseguito automaticamente solo se l'argomento data= ha esattamente tre colonne (una delle quali è una risposta). Ad esempio, nella pagina ?plot.svm aiuto, è possibile chiamare

data(cats, package = "MASS") 
m1 <- svm(Sex~., data = cats) 
plot(m1, cats) 

Quindi, dal momento che si può mostrare solo due dimensioni su un terreno, è necessario specificare ciò che si desidera utilizzare per x e y quando si dispone di più di una da scegliere

cplus<-cats 
cplus$Oth<-rnorm(nrow(cplus)) 
m2 <- svm(Sex~., data = cplus) 
plot(m2, cplus) #error 
plot(m2, cplus, Bwt~Hwt) #Ok 
plot(m2, cplus, Hwt~Oth) #Ok 

Ecco perché si ottiene l'errore "Formula mancante".

C'è anche un'altra cattura. Lo plot.svm traccerà le variabili continue solo lungo gli assi x e . Le lenti a contatto data.frame ha solo variabili categoriali. La funzione plot.svm semplicemente non supporta questo per quanto posso dire. Dovrai decidere come vuoi riassumere le informazioni nella tua visualizzazione.