【发布时间】:2019-10-24 04:53:30
【问题描述】:
我正在使用 iris 数据集在 R 中练习 SVM,我想从我的模型中获取特征权重/系数,但我认为我可能误解了某些内容,因为我的输出为我提供了 32 个支持向量。我假设我会得到四个,因为我有四个变量正在被分析。我知道在使用 svm() 函数时有办法做到这一点,但我正在尝试使用 caret 中的 train() 函数来生成我的 SVM。
library(caret)
# Define fitControl
fitControl <- trainControl(## 5-fold CV
method = "cv",
number = 5,
classProbs = TRUE,
summaryFunction = twoClassSummary )
# Define Tune
grid<-expand.grid(C=c(2^-5,2^-3,2^-1))
##########
df<-iris head(df)
df<-df[df$Species!='setosa',]
df$Species<-as.character(df$Species)
df$Species<-as.factor(df$Species)
# set random seed and run the model
set.seed(321)
svmFit1 <- train(x = df[-5],
y=df$Species,
method = "svmLinear",
trControl = fitControl,
preProc = c("center","scale"),
metric="ROC",
tuneGrid=grid )
svmFit1
我以为只是svmFit1$finalModel@coef,但我认为应该得到 4 个向量时得到了 32 个向量。这是为什么呢?
【问题讨论】: