首页 文章

情节错误,公式缺失

提问于
浏览
7

我试图绘制我的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 回答

  • 17

    问题是在您的模型中,您有多个协变量 . 只有当 data= 参数恰好有三列(其中一列是响应)时, plot() 才会自动运行 . 例如,在 ?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 函数根本不支持这个 . 您必须决定如何在自己的可视化中汇总该信息 .

相关问题