如何在R中得到SVM模型的系数和p值

时间:2018-01-15 16:13:03

标签: r svm r-caret

我想知道是否有办法从e1071包中获取svmLinear方法中的所有系数和p值。我试过了summary(modelname)但是没有用。 以下是我的svm模型的代码,其中包含10倍交叉验证:

library("e1071")
library("caret")
load(df) ## my dataset
ctrl <- trainControl(method = "repeatedcv", number = 10, savePredictions = TRUE) ## 10 fold cross validation
fitsvm <- train(Attrition ~., data=df, method = "svmLinear", trControl = ctrl) ##train model

summary (fitsvm)

Length  Class   Mode 
 1      ksvm     S4 

我可以通过glm-logistic回归得到它们:

fit <- train(Attrition ~., data= df, method="glm", family="binomial", trControl= tc)
summary(fit)

                          Estimate   Std. Error  z value  Pr(>|z|)    
(Intercept)               3.424e+00  1.254e+00   2.731    0.006318 ** 

如果有人能给我一个方法,我会很高兴,非常感谢!

1 个答案:

答案 0 :(得分:0)

SVM 不假设概率模型,因此没有标准误差或 p。价值。

不过,您可以获得系数。在 alpha*y 包中,fit$coefs 存储在 fit$SV 中,支持向量存储在 b+w1*x1+w2*x2+...=0 中。你必须小心如何提取它们。如果你只有一个二元分类,那么分离平面 w = t(fit$SV) %*% fit$coefs b = -fit$rho 的系数就是:

abline(-b/w[2], -w[1]/w[2])

如果您只有二维特征,您可以使用以下方法绘制分隔线:

w

对于多类来说有点棘手。您可以查看 my answer here 以获得如何从 coefs 和 SV 中提取 b<div class="container"> <div class="row"> <div class="col-sm"> One of three columns </div> <div class="col-sm"> One of three columns </div> <div class="col-sm"> One of three columns </div> </div> </div> 的详细说明。