sklearn.svm.LinearSVC

class sklearn.svm.LinearSVC

Clasificación Lineal por Vectores de Soporte.

Similar a SVC con el parámetro kernel=”linear”, pero implementado en términos de liblinear en lugar de libsvm, por lo que tiene más flexibilidad en la elección de las penalidades y funciones de pérdida y debería escalar mejor a un gran número de muestras.

Esta clase soporta entradas densas y dispersas y el soporte multiclase es manejado de acuerdo a un esquema uno contra el resto.

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

Parámetros
penalty{“l1”, “l2”}, default=”l2”

Específica la norma usada en la penalización. La penalidad “l2” es el estandar usado en SVC. El “l1” lleva a vectores coef_ que son dispersos.

loss{“hinge”, “squared_hinge”}, default=”squared_hinge”

Específica la función de pérdida. “hinge” es la pérdida estándar SVM (utilizada por ejemplo, por la clase SVC) mientras que “squared_hinge” es el cuadrado de la pérdida hince. La combinación de penalty='l1' y loss='hinge' no está soportada.

dualbooleano, default=True

Seleccione el algoritmo para resolver el problema de optimización dual o primaria. Se prefiere dual=False cuando n_samples > n_features.

tolflotante, default=1e-4

Tolerancia para el criterio de parada.

Cflotante, default=1.0

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

multi_class{“ovr”, “crammer_singer”}, default=”ovr”

Determina la estrategia multiclase si y contiene más que dos clases. "ovr" entrena clasificadores n_classes uno contra el resto, mientras que "crammer_singer" optimiza un objetivo conjunto sobre todas las clases. Mientras que crammer_singer es interesante desde una perspectiva teorica ya que es consistente, casí ni se usa en la practica ya que pocas veces lleva a mejor precisión y es mas cara para calcular. Si se escoge "crammer_singer", las opciones loss, penalty y dual serán ignorados.

fit_interceptbooleano, default=True

Si se calcula el intercepto para este modelo. Si se establece en False, no se utilizará ningún intercepto en los cálculos (es decir, se espera que los datos ya estén centrados).

intercept_scalingflotante, default=1

Cuando self.fit_intercept es True, la instancia vector y se vuelve [x, self.intercept_scaling], es decir, una característica «synthetic» con valor constante igual a intercept_scaling se adjunta al vector de instancia. El intercepto se vuelve intercept_scaling * synthetic feature weight. Nota! El ponderado de característica sintetica es sujeto a la regularización l1/l2 como todás las demás características. Para disminuir el efecto de la regularización en el ponderado de características synteticas (y por lo tanto, en el intercepto) intercept_scaling debe ser incrementado.

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)).

verboseentero, default=0

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 liblinear que, si está habilitada, puede no funcionar correctamente en un contexto multihilo.

random_stateentero, instancia de RandomState o None, default=None

Controla la generación de números pseudo-aleatorios para revolver los datos para el descenso de coordenadas duales (si dual=True). Cuando dual=False la implementación subyacente de LinearSVC no es aleatoria y random_state no tiene efecto sobre los resultados. Pasa un int para salida reproducible a través de múltiples llamadas de función. Ver Glosario.

max_iterentero, default=1000

Número máximo de iteraciones a correr.

Atributos
coef_ndarray de forma (1, n_features) si n_classes == 2 de lo contrario (n_classes, 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 sólo lectura derivada de raw_coef_ que sigue el diseño de memoria interna de liblinear.

intercept_ndarray de formae (1,) si n_classes == 2 de lo contrario (n_classes,)

Constantes en la función de decisión.

classes_ndarray de forma (n_classes,)

Etiquetas de clase únicas.

n_iter_entero

Número máximo de iteraciones ejecutadas en todas las clases.

Ver también

SVC

Implementación del clasificador de Máquina de Vectores de Soporte usando libsvm: el núcleo puede ser no lineal pero su algoritmo SMO no escala a un número grande de muestras como LinearSVC lo hace. Además, el modo SVC multiclase es implementado utilizando un esquema uno contra uno mientras que LinearSVC utiliza uno contra el resto. Es posible implementar uno contra el resto con SVC utilizando el envoltorio OneVsRestClassifier. Finalmente SVC puede ajustar datos densos sin copia de memoria si la entrada es contingua con C. Sin embargo, los datos dispersos igual incurrirán en la copia de memoria.

sklearn.linear_model.SGDClassifier

SGDClassifier puede optimizar la misma función de costo que LinearSVC ajustando los parámetros de penalización y pérdida. Además requiere menos memoria, permite un aprendizaje incremental (en línea) e implementa varias funciones de pérdida y regimenes de regularización.

Notas

La implementación C subyacente utiliza un generador de números aleatorios para seleccionar características al ajustar el modelo. Por lo tanto, no es raro tener resultados ligeramente diferentes para los mismos datos de entrenamiento. Si eso sucede, intente con un parámetro tol más pequeño.

La implementación subyacente, liblinear, utiliza una representación interna dispersa para los datos que incurrirán en una copia de memoria.

La salida predicha quizás no coincida con la del liblinear independiente en ciertos casos. Ver diferencias con el liblinear en la documentación narrativa.

Referencias

LIBLINEAR: A Library for Large Linear Classification

Ejemplos

>>> from sklearn.svm import LinearSVC
>>> from sklearn.pipeline import make_pipeline
>>> from sklearn.preprocessing import StandardScaler
>>> from sklearn.datasets import make_classification
>>> X, y = make_classification(n_features=4, random_state=0)
>>> clf = make_pipeline(StandardScaler(),
...                     LinearSVC(random_state=0, tol=1e-5))
>>> clf.fit(X, y)
Pipeline(steps=[('standardscaler', StandardScaler()),
                ('linearsvc', LinearSVC(random_state=0, tol=1e-05))])
>>> print(clf.named_steps['linearsvc'].coef_)
[[0.141...   0.526... 0.679... 0.493...]]
>>> print(clf.named_steps['linearsvc'].intercept_)
[0.1693...]
>>> print(clf.predict([[0, 0, 0, 0]]))
[1]

Métodos

decision_function

Predice las puntuaciones de confianza para las muestras.

densify

Convierte la matriz de coeficientes en formato de arreglo denso.

fit

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

get_params

Obtiene los parámetros para este estimador.

predict

Predice las etiquetas de clase para las muestras en X.

score

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

set_params

Establece los parámetros de este estimador.

sparsify

Convierte la matriz de coeficientes en formato disperso.

decision_function()

Predice las puntuaciones de confianza para las muestras.

La puntuación de confianza de una muestra es proporcional a la distancia con signo de esa muestra al hiperplano.

Parámetros
Xarray-like o matriz dispersa, forma (n_samples, n_features)

Muestras.

Devuelve
arreglo, forma=(n_samples,) si n_classes == 2 de lo contrario (n_samples, n_classes)

Puntuaciones de confianza por combinación (sample, class). En el caso binario, la puntuación de confianza para self.classes_[1] donde >0 significa que esta clase sería predicha.

densify()

Convierte la matriz de coeficientes en formato de arreglo denso.

Convierte el miembro coef_ (de vuelta) en un numpy.ndarray. Este es el formato predeterminado de coef_ y se requiere para el ajuste, por lo que invocar este método sólo es necesario en los modelos que han sido previamente dispersados (sparsified); de lo contrario, es un no-op.

Devuelve
self

Estimador ajustado.

fit()

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

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

Vector de entrenamiento, donde n_samples es el número de muestras y n_features es el número de características.

yarray-like de forma (n_samples,)

Vector objetivo relativo a X.

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

Arreglo de pesos asignados a muestras individuales. Si no se proporciona, cada muestra se da un ponderado unitario.

Nuevo en la versión 0.18.

Devuelve
selfobjeto

Una instancia del estimador.

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

Los nombres de los parámetros asignados a sus valores.

predict()

Predice las etiquetas de clase para las muestras en X.

Parámetros
Xarray-like o matriz dispersa, forma (n_samples, n_features)

Muestras.

Devuelve
Carreglo, forma [n_samples]

Etiqueta de clase predicha por muestra.

score()

Devuelve la precisión media en los datos de prueba y las etiquetas 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 muestras.

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.

sparsify()

Convierte la matriz de coeficientes en formato disperso.

Convierte el miembro coef_ en una matriz scipy.sparse, que para los modelos L1-regularizados puede ser mucho más eficiente en cuanto a memoria y almacenamiento que la representación numpy.ndarray habitual.

El miembro intercept_ no se convierte.

Devuelve
self

Estimador ajustado.

Notas

Para los modelos no dispersos, es decir, cuando no hay muchos ceros en coef_, esto puede en realidad aumentar el uso de la memoria, así que utilice este método con cuidado. Una regla general es que el número de elementos cero, que puede ser calculado con (coef_ == 0).sum(), debe ser más del 50% para que esto proporcione beneficios significativos.

Después de invocar a este método, el ajuste posterior con el método partial_fit (si lo hay) no funcionará hasta que llames a densify.

Ejemplos con sklearn.svm.LinearSVC