【发布时间】:2016-09-06 19:02:53
【问题描述】:
我正在尝试使用e1071 中的svm,在使用大量数据之前我打算玩玩具示例。
这就是我正在做的事情,我不明白为什么它显然不起作用。
# generate some silly 2D data
X = data.frame(x1 = runif(10), x2 = runif(10))
# attach a label according to position above/below diagonal x+y=1
X$y <- rep(1, 10)
X$y[(X$x1 + X$x2)<1] = -1
X$y <- factor(X$y)
# train svm model
require(e1071)
meta <- svm(y~., data = X, kernel = "linear", scale = FALSE)
# visualize the result
plot(meta, X)
因此,从这一点开始,图形错误已经可见,因为存在一些错误分类的点,并且分类器不是我所期望的(所有向量都是特别支持的)。
如果我想预测,那也是错的:
predict(meta, newdata = X[,-3])==X$y
[1] TRUE TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE
如果我想进行手动预测,我也无法正常工作:
omega <- t(meta$coefs)%*%meta$SV
pred <- c(-sign(omega%*%t(X[,-3]) - meta$rho))
pred==X$y
[1] TRUE TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE
我确定我缺少某些东西,但不知道是什么!
【问题讨论】: