Replicación de scikit.svm.SRV.predict (X)

Estoy tratando de replicar svm.svr.predict (X) de scikit-learn y no sé cómo hacerlo correctamente.

Lo que quiero hacer es porque después de entrenar la SVM con un kernel RBF me gustaría implementar la predicción en otro lenguaje de progtwigción (Java) y necesitaría poder exportar los parámetros del modelo para poder realizar predicciones de casos desconocidos .

En la página de documentación de scikit, veo que hay atributos ‘support_ y’ support_vectors_, pero no entiendo cómo replicar el método .predict (X).

Lo que estoy buscando es una solución de la forma y_pred = f (X, svm.svr.support_, svm.svr.support_vectors_, etc, …).

¡Gracias de antemano!

Edit: Es SVM para REGRESIÓN, no CLASIFICACIÓN!

Edit: Este es el código que estoy intentando ahora, desde Calcular la función de decisión de SVM manualmente sin éxito …

from sklearn import svm import math import numpy as np X = [[0, 0], [1, 1], [1,2], [1,2]] y = [0, 1, 1, 1] clf = svm.SVR(gamma=1e-3) clf.fit(X, y) Xtest = [0,0] print 'clf.decision_function:' print clf.decision_function(Xtest) sup_vecs = clf.support_vectors_ dual_coefs = clf.dual_coef_ gamma = clf.gamma intercept = clf.intercept_ diff = sup_vecs - Xtest # Vectorized method norm2 = np.array([np.linalg.norm(diff[n, :]) for n in range(np.shape(sup_vecs)[0])]) dec_func_vec = -1 * (dual_coefs.dot(np.exp(-gamma*(norm2**2))) - intercept) print 'decision_function replication:' print dec_func_vec 

Los resultados que estoy obteniendo son diferentes para ambos métodos, ¿POR QUÉ?

 clf.decision_function: [[ 0.89500898]] decision_function replication: [ 0.89900498] 

Gracias a la contribución de B@rmaley.exe , encontré la manera de replicar SVM manualmente. Tuve que reemplazar

  dec_func_vec = -1 * (dual_coefs.dot(np.exp(-gamma*(norm2**2))) - intercept) 

con

  dec_func_vec = (dual_coefs.dot(np.exp(-gamma*(norm2**2))) + intercept) 

Entonces, el método vectorizado completo es:

  # Vectorized method norm2 = np.array([np.linalg.norm(diff[n, :]) for n in range(np.shape(sup_vecs)[0])]) dec_func_vec = -1 * (dual_coefs.dot(np.exp(-gamma*(norm2**2))) - intercept)