我正在尝试绘制二维超平面(线),用 e1071 的 svm 分隔 3 类问题。我使用了默认方法(因此不涉及公式),如下所示:
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.
但是我没有使用公式方法,我使用了默认方法,如果我传递'~'
或 '~.'
作为公式参数,它会提示矩阵 x
不是 data.frame
。
- 有没有办法在使用默认方法时绘制二维问题的拟合分隔符?
- 我怎样才能实现这一目标?
提前致谢。
最佳答案
虽然 svm()
允许您使用默认方法或公式方法指定输入,但 plot.svm()
只允许使用公式方法。此外,仅将 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)
关于r - 在 R 中绘制 SVM 线性分离器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32910813/