En su clf
,
coef_
son los pesos asignados a las características; (Nota: sólo funciona para SVM lineal)
support_vectors_
y support_
son los vectores de apoyo y el índice correspondiente;
dual_coef_
son los coeficientes del vector de apoyo en la función de decisión; y
intercept_
es el sesgo de la función de decisión.
En la SVM lineal, $w^Tx+b=0$ es el límite de decisión, y $w$ son los coeficientes de los vectores de apoyo, $b$ es el sesgo, todo ello definido anteriormente.
La referencia del documento: http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html
En el caso de una SVM RBF, el espacio de datos original se transforma en otro espacio de alta dimensión. Así que los coeficientes de los pesos no están directamente relacionados con el espacio de entrada. Creo que por eso coef_
no pueden ser vistos como los pesos en su espacio de entrada original. Por cierto, no estoy seguro de si coef_
es el peso en la característica del espacio transformado, supongo que no lo es, ya que el espacio RBF es en realidad de dimensión infinita.
Le sugiero que preprocese los datos antes de la implementación de la SVM, ya que ésta se ve muy influenciada por las variantes de la escala de características.
-
Normalización estándar de los datos;
-
Decoración sigma^(-1/2)*X
donde sigma = cov(X)
.
Sin embargo, es posible que tenga que hacer algunos cálculos por sí mismo para obtener la función de decisión.
-
Calcular el vector de características v
de su punto de datos bajo prueba. La longitud de v
se supone que es la misma que las filas de support_vectors_.
-
Para cada fila i en support_vectors_, calcular la distancia euclidiana d[i] = numpy.linalg.norm(support_vectors_[i,] - v)
.
-
t[i] = exp{-gamma *d[i].^2}
donde gamma
es el parámetro RBF.
-
Resumir dual_coef_[i] * t[i]
sobre todo i
, entonces más intercept_
. Esta será la función de decisión.