R中SVM模型的系数和p值的求法

z9smfwbn  于 2023-02-20  发布在  其他
关注(0)|答案(1)|浏览(261)

我想知道是否有一种方法可以从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 **

如果有人能给我指路,我会很高兴的,谢谢!

x6492ojm

x6492ojm1#

SVM不假设概率模型,因此没有标准误差或p值。
但是,您可以获得系数。在e1071包中,alpha*y存储在fit$coefs中,而支持向量存储在fit$SV中。您必须小心如何提取它们。如果您只有二元分类,则分离平面b+w1*x1+w2*x2+...=0的系数简单地为:

w = t(fit$SV) %*% fit$coefs
b = -fit$rho

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

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

对于多类来说就有点棘手了,你可以查看my answer here来获得如何从coefs和SV中提取wb的详细说明。

相关问题