Potrzebuję pakietu, który może dać mi równanie dla liniowego modelu SVM. Obecnie używam e1071 tak:
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
Nie jestem jednak pewien, w jaki sposób e1071::svm()
wybiera klasy dodatnie i ujemne, więc myślę, że może to popsuć różne zestawy danych. Czy ktoś może potwierdzić, w jaki sposób ta funkcja decyduje, która klasa jest dodatnia, a która ujemna?
Czy jest też lepszy pakiet?
Odpowiedzi:
Dla punktu danych maszyna SVM oblicza wartość decyzji w następujący sposób:x d
Jeśli to etykieta wynosi , w przeciwnym razie . Możesz także uzyskać etykiety lub wartości decyzyjne dla matrycy danych, mówiącd>0 x +1 −1
newdata
lub
Zachowaj ostrożność, używając SVM z pakietu e1071, zobacz Problem z e1071 libsvm? pytanie. Kilka innych pakietów SVM dla R to kernlab, klaR i svmpath, zobacz ten przegląd: Obsługa maszyn wektorowych w R przez A. Karatzoglou i D. Meyer.
źródło