我正在尝试使用e1071包中的svm函数来绘制一个3类问题的2维超平面(线)。我使用了default方法(因此没有涉及公式),如下所示:
library('e1071')## S3 method for class 'default':machine <- svm(x, y, kernel="linear")
我似乎无法使用plot.svm
方法来绘制它:
plot(machine, x)Error in plot.svm(machine, x) : missing formula.
但我没有使用formula方法,我使用的是default方法,如果我传递'~'
或'~.'
作为公式参数,它会抱怨矩阵x
不是data.frame
。
- 在使用default方法时,有没有办法绘制2D问题的拟合分隔器?
- 我该如何实现这一点?
提前感谢。
回答:
看起来虽然svm()
允许你使用default或formula方法来指定输入,但plot.svm()
只允许使用formula方法。此外,仅将x
传递给plot.svm()
并不能提供它所需的所有信息。它还需要y
。
试试这个:
library(e1071)x <- prcomp(iris[,1:4])$x[,1:2]y <- iris[,5]df <- data.frame(cbind(x[],y[]))machine <- svm(y ~ PC1 + PC2, data=df)plot(machine, data=df)