Ich benötige ein Paket, das mir die Gleichung für ein lineares SVM-Modell geben kann. Zur Zeit benutze ich e1071 wie folgt :
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
Ich bin mir jedoch nicht sicher, wie e1071::svm()
positive und negative Klassen ausgewählt werden sollen, daher denke ich, dass dies zu unterschiedlichen Datensätzen führen kann. Kann jemand bestätigen, wie diese Funktion entscheidet, welche Klasse positiv und welche negativ ist?
Gibt es dafür auch ein besseres Paket?
Antworten:
Für den Datenpunkt berechnet Ihre SVM den Entscheidungswert folgendermaßen:dx d
Wenn dann Label von ist , sonst ist es . Sie können auch Beschriftungen oder Entscheidungswerte für die Datenmatrix erhalten, indem Sie sagenx + 1 - 1d>0 x +1 −1
newdata
oder
Seien Sie vorsichtig, wenn Sie SVM aus Paket e1071 verwenden, siehe Problem mit e1071 libsvm? Frage. Einige andere SVM-Pakete für R sind kernlab, klaR und svmpath. Siehe diese Übersicht: Support Vector Machines in R von A. Karatzoglou und D. Meyer.
quelle