Мне нужен пакет, который может дать мне уравнение для линейной модели SVM. В настоящее время я использую E1071 так:
library(e1071)
m = svm(data, labels, type='C', kernel='linear', cost=cost, probability=FALSE, scale=scale)
w = t(m$coefs) %*% data[m$index,] #Weight vector
b = -model$rho #Offset
Тем не менее, я не уверен, как e1071::svm()
выбирать положительные и отрицательные классы, поэтому я думаю, что это может испортить разные наборы данных. Кто-нибудь может подтвердить, как эта функция решает, какой класс является положительным, а какой отрицательным?
Кроме того, есть ли лучший пакет для этого?
Ответы:
Для точки данных ваш SVM вычисляет значение решения следующим образом:дx d
Если то метка равна , иначе это . Вы также можете получить метки или значения решений для матрицы данных , сказавx + 1 - 1d>0 x +1 −1
newdata
или
Будьте осторожны при использовании SVM из пакета e1071, см. Проблема с e1071 libsvm? вопрос. Несколько других пакетов SVM для R - это kernlab, klaR и svmpath, см. Этот обзор: опорные векторные машины в R от A. Karatzoglou и D. Meyer.
источник