绘图错误,使用 svm 时缺少公式

Posted

技术标签:

【中文标题】绘图错误,使用 svm 时缺少公式【英文标题】:Error in plot, formula missing when using svm 【发布时间】:2014-11-01 05:51:38 【问题描述】:

我正在尝试绘制我的 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】:

问题在于,在您的模型中,您有多个协变量。 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

这就是您收到“缺少公式”错误的原因。

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

【讨论】:

以上是关于绘图错误,使用 svm 时缺少公式的主要内容,如果未能解决你的问题,请参考以下文章

022_switch缺少break关键字错误

在乳胶中的方程中缺少 endgroup插入错误?

调试 ghostscript 缺少字体错误的提示

在训练 SVM 对图像进行分类时设置具有序列错误的数组元素

训练 SVM 时出现 OpenCV 错误(错误参数)

没有运行时错误,但虹膜 PCA 绘图错误