sklearn.svm.SVC

class sklearn.svm.SVC

Clasificación de Vector C-Apoyo.

La implementación se basa en libsvm. El tiempo de ajuste se escala al menos cuadráticamente con el número de muestras y puede ser poco práctico más allá de decenas de miles de muestras. Para conjuntos de datos mas grandes consideré usar LinearSVC o SGDClassifier en su lugar, posiblemente después de un transformador Nystroem.

El soporte multiclase se gestiona de acuerdo a un esquema uno contra uno.

Para detalles sobre la formulación matemática precisa de las funciones de núcleo y como gamma, coef0 y degree se afectan unos a otros, ver la sección correspondiente en la documentación narrativa: Funciones del núcleo.

Más información en el Manual de usuario.

Parámetros
Cflotante, default=1.0

Parámetro de regularización. La fuerza de la regularización es inversamente proporcional a C. Debe ser estrictamente positiva. La penalidad es una penalidad l2 cuadrática.

kernel{“linear”, “poly”, “rbf”, “sigmoid”, “precomputed”}, default=”rbf”

Especifica el tipo de núcleo a ser usado en el algoritmo. Debe ser uno de “linear”, “poly”, “rby”, “sigmoid”, “precomputed” o un invocable. Si no se da ninguna, se utilizará “rbf”. Si un invocable es dado se utilizara para pre-calcular la matriz del núcleo)``. Sí un invocable es dado es utilizado para pre-calcular la matriz de núcleo de las matrices de los datos; esa matriz debería ser un arreglo de forma (n_samples, n_samples).

degreeentero, default=3

Grado de la función de núcleo polinómico (“poly”). Ignorado por todos los otros núcleos.

gamma{“scale”, “auto”} o flotante, default=”scale”

Coeficiente de núcleo para “rbf”, “poly” y “sigmoid”.

  • si se pasa gamma='scale' (valor predeterminado), entonces se usa 1 / (n_features * X.var()) como valor de gamma,

  • si es “auto”, utiliza 1 / n_features.

Distinto en la versión 0.22: El valor predeterminado de gamma cambió de “auto” a “scale”.

coef0flotante, default=0.0

Término independiente en la función del núcleo. Sólo es significativo en “poly” y “sigmoid”.

shrinkingbooleano, default=True

Si se usa o no la heurística de reducción. Ver el Manual de usuario.

probabilitybooleano, default=False

Si se habilitan los estimados de probabilidad. Esto se debe habilitar antes de llamar fit, ralentizará ese método ya que internamente utiliza la validación cruzada de 5 pliegues, y predict_proba podría ser inconsistente con predict. Lea más en el Manual de Usuario.

tolflotante, default=1e-3

Tolerancia para el criterio de parada.

cache_sizeflotante, default=200

Específica el tamaño del caché del núcleo (en MB).

class_weightdict or “balanced”, default=None

Establece el parámetro C de la clase i a class_weight[i]*C para SVC. Si no es dado, todas las clases se suponen que tienen peso uno. El modo «balanced» utiliza los valores de y para ajustar automáticamente los ponderados inversamente proporcionales a las frecuencias de clase en los datos de entrada como n_samples / (n_classes * np.bincount(y))

verbosebooleano, default=False

Activar salida detallada. Ten en cuenta que esta configuración toma ventaja de una configuración por proceso en el tiempo de ejecución en libsvm que, si está habilitada, puede no funcionar correctamente en un contexto multihilo.

max_iterint, default=-1

Limite fuerte en iteraciones dentro del solucionador, o -1 para ningún límite.

decision_function_shape{“ovo”, “ovr”}, default=”ovr”

Devolver o no una función de decisión uno contra el resto (“ovr”) de la forma (n_samples, n_classes) como todos los demás clasificadores, o la función original uno contra uno (“ovo”) de la función de decisión de libsvm que tiene forma (n_samples, n_classes * (n_classes - 1) / 2). Sin embargo, uno contra uno (“ovo”) siempre se utiliza como estrategia de multiclase. El parámetro se ignora para la clasificación binaria.

Distinto en la versión 0.19: decision_function_shape es “ovr” por defecto.

Nuevo en la versión 0.17: decision_function_shape=”ovr” es recomendado.

Distinto en la versión 0.17: decision_function_shape=”ovo” and None se ha hecho obsoleto.

break_tiesbooleano, default=False

Si es verdadero, decision_function_shape='ovr', y el número de clases > 2, predict romperá vínculos de acuerdo a los valores de confianza de decision_function; de lo contrario se devuelve la primera clase entre las clases enlazadas. Por favor note que romper enlaces tiene un costo computacional relativamente alto comparado a una predicción simple.

Nuevo en la versión 0.22.

random_stateentero, instancia de RandomState o None, por defecto=None

Controla la generación de números pseudo-aleatorios para barajear los datos para estimados de probabilidad. Ignorado cuando probability es Falso. Pasa un int para salida reproducible a través de múltiples llamadas de función. Ver Glosario.

Atributos
class_weight_arreglo de forma (n_classes,)

Multiplicadores del parámetro C para cada clase. Calculado basado en el parámetro class_weight.

classes_arreglo de forma (n_classes,)

Las etiquetas de las clases.

coef_ndarray de forma (n_classes * (n_classes - 1) / 2, n_features)

Ponderaciones asignadas a las características (coeficientes en el problema primario). Esto solo está disponible en el caso de un kernel lineal.

coef_ es una propiedad de solo lectura derivada de dual_coef_ y support_vectors_.

dual_coef_ndarray de forma (n_classes -1, n_SV)

Coeficientes duales del vector de apoyo en la función de decisión (ver Formulación matemática), multiplicado por sus objetivos. Para la multiclase, coeficiente para todos los clasificadores 1-vs-1. El diseño de los coeficientes en el caso multiclase es algo no-trivial. Ver la sección multiclase del Manual de Usuario para más detalles.

fit_status_entero

0 si se ajusta correctamente, 1 en caso contrario (producirá una advertencia)

intercept_ndarray de forma (n_classes * (n_classes - 1) / 2,)

Constantes en la función de decisión.

support_ndarray de forma (n_SV)

Indices de vectores de apoyo.

support_vectors_ndarray de forma (n_SV, n_features)

Vectores de apoyo.

n_support_ndarray de forma (n_classes,), dtype=int32

Número de vectores de soporte para cada clase.

probA_ndarray de forma (n_classes * (n_classes - 1) / 2)
probB_ndarray de forma (n_classes * (n_classes - 1) / 2)

Si probability=True, corresponde a los parámetros aprendidos en el escalado de Platt para producir estimados de probabilidad de los valores de decisión. Si probability=False, es un arreglo vacio. El escalado de Platt utiliza la función logistica 1 / (1 + exp(decision_value * probA_ + probB_)) donde probA_ y probB_ son aprendidos del conjunto de datos [2]. Para más información en el caso multiclase y el procedimiento de entrenamiento ver la sección 8 de [1].

shape_fit_tupla de int de la forma (n_dimensions_of_X,)

Dimensiones del arreglo del vector de entrenamiento X.

Ver también

SVR

Maquína de Vector de Soporte para regresión implementado con libsvm.

LinearSVC

Máquina de vectores de soporte lineal escalable para la clasificación implementada con liblinear. Consulte la sección See Also de LinearSVC para más elementos de comparación.

Referencias

1

LIBSVM: A Library for Support Vector Machines

2

Platt, John (1999). «Probabilistic outputs for support vector machines and comparison to regularizedlikelihood methods.»

Ejemplos

>>> import numpy as np
>>> from sklearn.pipeline import make_pipeline
>>> from sklearn.preprocessing import StandardScaler
>>> X = np.array([[-1, -1], [-2, -1], [1, 1], [2, 1]])
>>> y = np.array([1, 1, 2, 2])
>>> from sklearn.svm import SVC
>>> clf = make_pipeline(StandardScaler(), SVC(gamma='auto'))
>>> clf.fit(X, y)
Pipeline(steps=[('standardscaler', StandardScaler()),
                ('svc', SVC(gamma='auto'))])
>>> print(clf.predict([[-0.8, -1]]))
[1]

Métodos

decision_function

Evalúa la función de decisión para las muestras en X.

fit

Ajusta el modelo SVM de acuerdo a los datos de entrenamiento dados.

get_params

Obtiene los parámetros para este estimador.

predict

Realiza la clasificación en las muestras en X.

score

Devuelve la precisión media en los datos y etiquetas de prueba dados.

set_params

Establece los parámetros de este estimador.

decision_function()

Evalúa la función de decisión para las muestras en X.

Parámetros
Xarray-like de forma (n_samples_X, n_features)
Devuelve
Xndarray de forma (n_samples, n_classes * (n_classes-1) / 2)

Devuelve la función de decisión de la muestra para cada clase en el modelo. Si decision_function_shape=”ovr”, la forma es (n_samples, n_classes).

Notas

Si decision_function_shape=”ovo”, los valores de función son proporcionales a la distancia de las muestras X al hiperplano separador. Si las distancias exactas son requeridas, divida los valores de función por la norma del vector de ponderado (coef_). Ver también esta pregunta para más detalles. Si decision_function_shape=”ovr”, la función de decisión es una transformación monotónica de la función de decisión ovo.

fit()

Ajusta el modelo SVM de acuerdo a los datos de entrenamiento dados.

Parámetros
X{array-like, sparse matrix} de forma (n_samples, n_features) o (n_samples, n_samples)

Vectores de entrenamiento, donde n_samples es el número de muestras y n_features es el número de características. Para kernel=»precomputed», la forma esperada de X es (n_samples, n_samples).

yarray-like de forma (n_samples,)

Valores objetivo (etiquetas de clase en clasificación, números reales en regresión).

sample_weightarray-like de forma (n_samples,), default=None

Ponderados por muestra. Reescalado de C por muestra. Los ponderados más altos obligan al clasificador a poner más énfasis en estos puntos.

Devuelve
selfobject

Notas

Si X y y no son arreglos contiguos y C-ordenados de np.float64 y X no es un scipy.sparse.csr_matrix, X y/o y pueden ser copiados.

Si X es un arreglo denso, entonces los otros métodos no soportaran matrices dispersas como entrada.

get_params()

Obtiene los parámetros para este estimador.

Parámetros
deepbooleano, default=True

Si es True, devolverá los parámetros para este estimador y los sub objetos contenidos que son estimadores.

Devuelve
paramsdict

Nombres de parámetros mapeados a sus valores.

predict()

Realiza la clasificación en las muestras en X.

Para un modelo de una clase, se devuelve +1 o -1.

Parámetros
X{array-like, sparse matrix} de forma (n_samples, n_features) o (n_samples_test, n_samples_train)

Para kernel=»precomputed», la forma esperada de X es (n_samples_test, n_samples_train).

Devuelve
y_predndarray de forma (n_samples,)

Etiquetas de clase para las muestras en X.

property predict_log_proba

Calcula las probabilidades log de los posibles resultados de las muestras en X.

El modelo necesita tener información de probabilidad calculada en el tiempo de entrenamiento: ajustar con el atributo probabilidad establecido como True.

Parámetros
Xarray-like de forma (n_samples, n_features) o (n_samples_test, n_samples_train)

Para kernel=»precomputed», la forma esperada de X es (n_samples_test, n_samples_train).

Devuelve
Tndarray de forma (n_samples, n_classes)

Devuelve las probabilidades logarítmica de las muestras para cada clase del modelo. Las columnas corresponden a las clases ordenadas, tal y como aparecen en el atributo classes_.

Notas

El modelo de probabilidad es creado utilizando la validación cruzada, así que los resultados pueden ser ligeramente diferentes que aquellos obtenidos mediante predict. También producirá resultandos sin sentido en conjuntos de datos muy pequeños.

property predict_proba

Calcula las probabilidades de los posibles resultados de las muestras en X.

El modelo necesita tener información de probabilidad calculada en el tiempo de entrenamiento: ajustar con el atributo probabilidad establecido como True.

Parámetros
Xarray-like de forma (n_samples_X, n_features)

Para kernel=»precomputed», la forma esperada de X es (n_samples_test, n_samples_train).

Devuelve
Tndarray de forma (n_samples, n_classes)

Devuelve la probabilidad de las muestras para cada clase del modelo. Las columnas corresponden a las clases ordenadas, tal y como aparecen en el atributo classes_.

Notas

El modelo de probabilidad es creado utilizando la validación cruzada, así que los resultados pueden ser ligeramente diferentes que aquellos obtenidos mediante predict. También producirá resultandos sin sentido en conjuntos de datos muy pequeños.

score()

Devuelve la precisión media en los datos y etiquetas de prueba dados.

En la clasificación multietiqueta, se trata de la precisión del subconjunto que es una métrica rigurosa, ya que se requiere para cada muestra que cada conjunto de etiquetas sea predicho correctamente.

Parámetros
Xarray-like de forma (n_samples_X, n_features)

Muestras de prueba.

yarray-like de forma (n_samples,) o (n_samples, n_outputs)

Etiquetas True para X.

sample_weightarray-like de forma (n_samples,), default=None

Ponderaciones de la muestra.

Devuelve
scorede punto flotante (float)

Precisión media de self.predict(X) con respecto a y.

set_params()

Establece los parámetros de este estimador.

El método funciona tanto con estimadores simples como en objetos anidados (como Pipeline). Estos últimos tienen parámetros de la forma <component>__<parameter> para que sea posible actualizar cada componente de un objeto anidado.

Parámetros
**paramsdict

Parámetros del estimador.

Devuelve
selfinstancia del estimador

Instancia de estimador.

Ejemplos usando sklearn.svm.SVC