如何从 R 中的线性 SVM 获得决策边界?

机器算法验证 r 支持向量机 e1071
2022-03-07 01:07:20

我需要一个可以为我提供线性 SVM 模型方程的软件包。目前我正在使用e1071像这样:

library(e1071)
m = svm(data, labels, type='C', kernel='linear', cost=cost, probability=FALSE, scale=scale)
w = t(m$coefs) %*% data[m$index,]  #Weight vector
b = -model$rho #Offset

但是,我不确定如何e1071::svm()选择正类和负类,所以我认为这可能会与不同的数据集搞砸。谁能确认这个函数是如何决定哪个类是正面的,哪个是负面的?

另外,有没有更好的包呢?

1个回答

对于数据点 ,您的 SVM以下列方式xd

d <- sum(w * x) + b

如果的标签为,否则为您还可以通过说来获取数据矩阵的标签或决策值d>0x+11newdata

predict(m, newdata)

或者

predict(m, newdata, decision.values = TRUE)

使用包 e1071 中的 SVM 时要小心,请参阅Problem with e1071 libsvm? 问题。R 的其他几个 SVM 包是 kernlab、klaR 和 svmpath,请参阅此概述:A. Karatzoglou 和 D. Meyer在 R 中的支持向量机。