Как подсчитать количество векторов поддержки из пакета R LiblineaR
Например, есть ли способ подсчитать количество векторов поддержки в этой модели классификации?
library(LiblineaR)
data(iris)
attach(iris)
x <- iris[,1:4]
y <- factor(iris[, 5])
set.seed(1)
train <- sample(1:dim(iris)[1],100)
detach(iris)
xTrain <- x[train,]
xTest <- x[-train,]
yTrain <- y[train]
yTest <- y[-train]
s <- scale(xTrain, center=T, scale=T)
m <- LiblineaR(data=s, target=yTrain, type=5, cost=0.1)
m
Выход
$TypeDetail
[1] "L1-regularized L2-loss support vector classification (L1R_L2LOSS_SVC)"
$Type
[1] 5
$W
Sepal.Length Sepal.Width Petal.Length Petal.Width Bias
setosa 0 0.2075367 -0.9154018 0.000000 -0.4105989
versicolor 0 -0.4238142 0.0303085 0.000000 -0.2447197
virginica 0 0.0000000 0.0000000 1.183732 -0.6795709
$Bias
[1] 1
$ClassNames
[1] setosa versicolor virginica
Levels: setosa versicolor virginica
$NbClass
[1] 3
attr(,"class")
[1] "LiblineaR"
1 ответ
liblineaR
пакет не хранит векторы поддержки в выводе модели, но такие пакеты как kernlab
делать:
> library kernlab
> your.svm <- ksvm(s,yTrain,type="C-svc",kernel="polydot",
prob.model=TRUE,kpar=list(degree=1, scale=1, offset=0))
Вы можете получить доступ к числу векторов поддержки следующим образом:
> your.svm@nSV
[1] 23
Или измените параметры для запуска другого типа SVM:
> your.svm <- ksvm(s,yTrain,type="one-svc",
kernel="splinedot",prob.model=TRUE)
Setting default kernel parameters
> your.svm@nSV
[1] 22
Есть много разных значений, хранящихся в your.svm
тип объекта str(your.svm)
чтобы увидеть их. Кроме того, вот все type
ты можешь использовать:
C-svc - C classification
nu-svc - nu classification
C-bsvc - bound-constraint svm classification
spoc-svc - Crammer, Singer native multi-class
kbb-svc - Weston, Watkins native multi-class
one-svc - novelty detection
eps-svr - epsilon regression
nu-svr - nu regression
eps-bsvr - bound-constraint svm regression