Introducción
En el aprendizaje automático, una canalización es una serie de pasos que se realizan secuencialmente para transformar los datos de entrada y luego construir un modelo. Scikit-learn proporciona una clase de canalización que se puede utilizar para encadenar múltiples pasos de procesamiento juntos, lo que facilita la construcción de modelos complejos que implican múltiples pasos de preprocesamiento y modelado.
En este tutorial, demostraremos cómo construir una canalización con selección de características y clasificación SVM utilizando Scikit-learn. Mostraremos cómo integrar la selección de características dentro de la canalización para evitar el sobreajuste y cómo inspeccionar la canalización para entender mejor el modelo.
Consejos sobre la VM
Una vez finalizada la inicialización de la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.
A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de las operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.
Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje sus comentarios después de la sesión y lo resolveremos rápidamente para usted.
Generar y Dividir el Conjunto de Datos
Comenzaremos generando un conjunto de datos de clasificación binaria utilizando la función make_classification de Scikit-learn. También dividiremos el conjunto de datos en subconjuntos de entrenamiento y prueba utilizando la función train_test_split de Scikit-learn.
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
X, y = make_classification(
n_features=20,
n_informative=3,
n_redundant=0,
n_classes=2,
n_clusters_per_class=2,
random_state=42,
)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)
Construir la Canalización
Ahora construiremos una canalización que consta de dos pasos: selección de características y clasificación SVM. Utilizaremos la función SelectKBest de Scikit-learn para la selección de características y la función LinearSVC de Scikit-learn para la clasificación SVM. La función SelectKBest selecciona las k características más informativas basadas en el método f_classif, que calcula el valor F de ANOVA entre cada característica y la variable objetivo. En este ejemplo, estableceremos k = 3.
from sklearn.feature_selection import SelectKBest, f_classif
from sklearn.pipeline import make_pipeline
from sklearn.svm import LinearSVC
anova_filter = SelectKBest(f_classif, k=3)
clf = LinearSVC(dual="auto")
anova_svm = make_pipeline(anova_filter, clf)
Entrenar la Canalización
Ahora entrenaremos la canalización en el subconjunto de entrenamiento utilizando el método fit. Durante el entrenamiento, la función SelectKBest seleccionará las 3 características más informativas basadas en el valor F de ANOVA, y la función LinearSVC entrenará un clasificador SVM lineal en las características seleccionadas.
anova_svm.fit(X_train, y_train)
Evaluar la Canalización
Ahora evaluaremos la canalización en el subconjunto de prueba utilizando el método predict. La canalización seleccionará las 3 características más informativas basadas en el valor F de ANOVA, y la función LinearSVC hará predicciones en las características seleccionadas.
from sklearn.metrics import classification_report
y_pred = anova_svm.predict(X_test)
print(classification_report(y_test, y_pred))
Inspeccionar la Canalización
Podemos inspeccionar la canalización para entender mejor el modelo. Podemos utilizar el índice de las características seleccionadas para recuperar los nombres originales de las características.
anova_svm[:-1].inverse_transform(anova_svm[-1].coef_)
Resumen
En este tutorial, demostramos cómo construir una canalización con selección de características y clasificación SVM utilizando Scikit-learn. Mostramos cómo integrar la selección de características dentro de la canalización para prevenir el sobreajuste y cómo inspeccionar la canalización para entender mejor el modelo. Las canalizaciones son una herramienta poderosa para construir modelos complejos de manera modular y eficiente.