Entscheidungsfunktion von SVM manuell berechnen

Ich versuche, die decision_function eines SVC-Klassifikators mit der Python-Bibliothek SKLearn manuell zu berechnen (im Gegensatz zur eingebauten Methode).

Ich habe verschiedene Methoden ausprobiert, aber ich kann die manuelle Berechnung immer nur abgleichen, wenn ich nicht Meine Daten skalieren.

z ist ein Testdatum (das skaliert wurde) und ich denke, die anderen Variablen sprechen für sich selbst (außerdem verwende ich einen rbf-Kernel, wenn das aus dem Code nicht ersichtlich ist).

Hier sind die Methoden, die ich ausprobiert habe:

1 Schleifenmethode:
dec_func = 0
for j in range(np.shape(sup_vecs)[0]):

    norm2 = np.linalg.norm(sup_vecs[j, :] - z)**2 
    dec_func = dec_func + dual_coefs[0, j] * np.exp(-gamma*norm2)

dec_func += intercept
2 Vektorisierte Methode
diff = sup_vecs - z
norm2 = np.sum(np.sqrt(diff*diff), 1)**2
dec_func = dual_coefs.dot(np.exp(-gamma_params*norm2)) + intercept

Keiner dieser Werte gibt jedoch den gleichen Wert wie @ zurücdecision_function. Ich denke, es könnte etwas mit der Neuskalierung meiner Werte zu tun haben oder eher etwas Dummes, nach dem ich schon lange gesucht habe!

Jede Hilfe wäre dankbar.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage