在 R 中绘制 SVM 线性分隔符
Plotting SVM Linear Separator in R
我正在尝试用 e1071 的 svm 绘制分隔 3-class 问题的二维超平面(线)。我使用了 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.
但是我没有用公式方法,我用的是default一个,如果我通过'~'
或者'~.'
作为公式参数,它会抱怨矩阵 x
不是 data.frame
。
- 有没有办法在使用 默认 方法时为二维问题绘制拟合的 separator/s?
- 我怎样才能做到这一点?
提前致谢。
虽然 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)
您的 x
似乎有两个以上的特征变量或列。
由于 plot.svm()
一次仅绘制 2 维,因此您需要通过提供公式参数来明确指定这些维度。
Ex:- ## more than two variables: fix 2 dimensions
data(iris)
m2 <- svm(Species~., data = iris)
plot(m2, iris, Petal.Width ~ Petal.Length,slice = list(Sepal.Width = 3, Sepal.Length = 4))
如果数据框默认只有两个维度,您可以忽略公式参数。
Ex:- ## a simple example
data(cats, package = "MASS")
m <- svm(Sex~., data = cats)
plot(m, cats)
可以在此处 plot.svm()
文档中找到这些详细信息 https://www.rdocumentation.org/packages/e1071/versions/1.7-3/topics/plot.svm
我正在尝试用 e1071 的 svm 绘制分隔 3-class 问题的二维超平面(线)。我使用了 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.
但是我没有用公式方法,我用的是default一个,如果我通过'~'
或者'~.'
作为公式参数,它会抱怨矩阵 x
不是 data.frame
。
- 有没有办法在使用 默认 方法时为二维问题绘制拟合的 separator/s?
- 我怎样才能做到这一点?
提前致谢。
虽然 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)
您的 x
似乎有两个以上的特征变量或列。
由于 plot.svm()
一次仅绘制 2 维,因此您需要通过提供公式参数来明确指定这些维度。
Ex:- ## more than two variables: fix 2 dimensions
data(iris)
m2 <- svm(Species~., data = iris)
plot(m2, iris, Petal.Width ~ Petal.Length,slice = list(Sepal.Width = 3, Sepal.Length = 4))
如果数据框默认只有两个维度,您可以忽略公式参数。
Ex:- ## a simple example
data(cats, package = "MASS")
m <- svm(Sex~., data = cats)
plot(m, cats)
可以在此处 plot.svm()
文档中找到这些详细信息 https://www.rdocumentation.org/packages/e1071/versions/1.7-3/topics/plot.svm