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'
yloss='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 quecrammer_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 comon_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
). Cuandodual=False
la implementación subyacente deLinearSVC
no es aleatoria yrandom_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 deraw_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
Predice las puntuaciones de confianza para las muestras.
Convierte la matriz de coeficientes en formato de arreglo denso.
Ajusta el modelo de acuerdo a los datos de entrenamiento dados.
Obtiene los parámetros para este estimador.
Predice las etiquetas de clase para las muestras en X.
Devuelve la precisión media en los datos de prueba y las etiquetas dados.
Establece los parámetros de este estimador.
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 decoef_
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 ay
.
- 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.