情节错误,公式缺失

时间:2014-09-08 03:16:57

标签: r weka svm

我正在尝试绘制我的svm模型。

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是weka中的内置数据文件。

然而,现在我遇到了一个错误,试图绘制模型。

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

1 个答案:

答案 0 :(得分:17)

问题在于,在您的模型中,您有多个协变量。 plot()只有在data=参数恰好有三列(其中一列是响应)时才会自动运行。例如,在?plot.svm帮助页面中,您可以调用

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

因为您只能在地块上显示两个维度,所以当您有多个维度可供选择时,您需要指定要用于xy的内容

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

这就是为什么你得到“Missing Formula”错误。

还有另一个问题。 plot.svm只会在xy轴上绘制连续变量。隐形眼镜data.frame只有分类变量。据我所知,plot.svm函数根本不支持这个。您必须决定如何在自己的可视化中汇总该信息。