2014-09-08 22 views
7

Próbuję wykreślić mój model svm.Błąd w działce, brakująca formuła

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") 

Arff soczewek kontaktowych jest wbudowanym plikiem danych weka.

Jednak teraz wystąpił błąd podczas próby wykreślenia modelu.

plot(model, x) 
Error in plot.svm(model, x) : missing formula. 

Odpowiedz

12

Problem polega na tym, że w twoim modelu masz wiele współzmiennych. plot() uruchomi się automatycznie, jeśli twój argument data= ma dokładnie trzy kolumny (z których jedna jest odpowiedzią). Na przykład, na stronie ?plot.svm pomocy, możesz zadzwonić

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

Więc skoro można pokazać tylko dwa wymiary na działce, trzeba określić, co chcesz używać dla x i y gdy masz więcej niż jeden do wyboru:

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 

Dlatego właśnie pojawia się błąd "Brakująca formuła".

Jest jeszcze jeden haczyk. plot.svm będzie tylko drukować zmienne ciągłe wzdłuż osi x i y. Dane data.frame mają tylko zmienne kategoryczne. Funkcja plot.svm po prostu nie obsługuje tego, o ile wiem. Musisz zdecydować, jak chcesz podsumować te informacje we własnej wizualizacji.

Powiązane problemy