Я практикую SVM в R, используя набор данных радужной оболочки, и я хочу получить весовые коэффициенты / коэффициенты функции из моей модели, но я думаю, что, возможно, что-то неправильно истолковал, учитывая, что мой вывод дает мне 32 вектора поддержки. Я предполагал, что получу четыре, если проанализирую четыре переменные. Я знаю, что есть способ сделать это при использовании функции svm()
, но я пытаюсь использовать функцию 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
, но я получаю 32 вектора, когда считаю, что должен получить 4. Почему это?