SVM para clasificación con sklearn
SVC, LinearSVC, selección del kernel, class_weight='balanced' y probability=True.
SVM para clasificación con sklearn es una lección gratuita de Learn AI with Python en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Learn AI with Python, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Learn AI with Python incluye 4 lecciones en total.
SVM en scikit-learn
scikit-learn ofrece varios clasificadores SVM. El principal es SVC, que admite fronteras lineales y basadas en kernels mediante su parámetro kernel.
from sklearn.svm import SVC
model = SVC(kernel="rbf", C=1.0, gamma="scale")
model.fit(Xtr, ytr)
print(model.score(Xte, yte))Los parámetros principales de SVC
Tres parámetros determinan el comportamiento de SVC:
kernel: el tipo de frontera (linear, rbf, poly)C: la penalización por errores / regularizacióngamma: la amplitud del kernel para rbf/poly
from sklearn.svm import SVC
model = SVC(kernel="rbf", C=10, gamma=0.1)Escalar siempre primero
Las SVM son sensibles a la escala. Incluya el escalador y SVC en un pipeline para que el escalado se ajuste únicamente con los datos de entrenamiento, incluso dentro de la validación cruzada.
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
pipe = make_pipeline(StandardScaler(), SVC(kernel="rbf"))
pipe.fit(Xtr, ytr)LinearSVC para conjuntos de datos grandes
SVC(kernel="linear") escala mal cuando hay muchas muestras. LinearSVC utiliza un solver más rápido, optimizado para problemas lineales, y gestiona mucho mejor los datos grandes y de alta dimensión.
from sklearn.svm import LinearSVC
model = LinearSVC(C=1.0, max_iter=5000)
model.fit(Xtr, ytr)SVC frente a LinearSVC
Utilice LinearSVC para datos grandes o dispersos, como el texto. Utilice SVC cuando necesite kernels para crear fronteras no lineales. Tenga en cuenta que LinearSVC utiliza una función de pérdida ligeramente diferente y no incluye predict_proba.
Desequilibrio de clases
Cuando una clase es poco frecuente, la SVM tiende a favorecer a la clase mayoritaria. Establecer class_weight="balanced" pondera automáticamente las clases de forma inversamente proporcional a su frecuencia.
from sklearn.svm import SVC
model = SVC(kernel="rbf", class_weight="balanced")
model.fit(Xtr, ytr)Pesos de clase personalizados
También puede pasar un diccionario explícito a class_weight para dar más importancia a una clase específica que con el balanceo automático.
from sklearn.svm import SVC
model = SVC(class_weight={0: 1, 1: 5}) # class 1 errors cost 5xEstimaciones de probabilidad
De forma predeterminada, SVC devuelve etiquetas duras. Establezca probability=True para habilitar predict_proba (mediante calibración interna), necesario para ROC AUC y el ajuste de umbrales. Esto ralentiza el entrenamiento.
from sklearn.svm import SVC
model = SVC(probability=True)
model.fit(Xtr, ytr)
proba = model.predict_proba(Xte)[:, 1]SVM multiclase
SVC gestiona automáticamente más de dos clases mediante un esquema uno contra uno. No necesita cambiar el código: solo ajuste el modelo con etiquetas multiclase y funcionará.
from sklearn.svm import SVC
model = SVC(decision_function_shape="ovr")
model.fit(X_multiclass, y_multiclass)Ajuste de C y gamma con GridSearchCV
El procedimiento habitual consiste en realizar una búsqueda en cuadrícula sobre C y gamma en una escala logarítmica, todo dentro de un pipeline de escalado.
from sklearn.model_selection import GridSearchCV
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
pipe = make_pipeline(StandardScaler(), SVC(kernel="rbf"))
param = {
"svc__C": [0.1, 1, 10, 100],
"svc__gamma": [0.001, 0.01, 0.1, 1],
}
gs = GridSearchCV(pipe, param, cv=5, scoring="f1")
gs.fit(Xtr, ytr)
print(gs.best_params_)Consejos prácticos
Los SVM destacan en conjuntos de datos pequeños o medianos con márgenes claros. Tienen dificultades con datos muy grandes (utilice LinearSVC o cambie a boosting). Escale siempre las características, ajuste C y gamma, y utilice class_weight para corregir el desequilibrio.
Comprobación rápida
Compruebe sus conocimientos sobre los SVM de sklearn.
Resumen
Resumen: Utilice SVC con kernel, C y gamma para la clasificación no lineal, siempre dentro de un pipeline de escalado. Cambie a LinearSVC para datos grandes o de texto. Gestione el desequilibrio con class_weight="balanced" y ajuste conjuntamente C y gamma con GridSearchCV.
Preguntas frecuentes
¿La lección «SVM para clasificación con sklearn» es gratis?
Sí — el texto completo de «SVM para clasificación con sklearn» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Learn AI with Python, actualiza a CoddyKit PRO. El curso de Learn AI with Python incluye 4 lecciones en total.
¿Qué aprenderé en «SVM para clasificación con sklearn»?
SVC, LinearSVC, selección del kernel, class_weight='balanced' y probability=True. Practicas Learn AI with Python con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Learn AI with Python?
No se requiere experiencia previa. Learn AI with Python en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «SVM para clasificación con sklearn»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Learn AI with Python?
Sí. Cada lección de Learn AI with Python incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Teoría de SVM: márgenes y vectores de soporte
- Truco del kernel: RBF, polinómico y sigmoide
- SVM para clasificación con sklearn
- SVM para regresión (SVR)