Construyendo tuberías de aprendizaje automático con Scikit-Learn

Machine LearningMachine LearningBeginner
Practicar Ahora

This tutorial is from open-source community. Access the source code

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) sklearn(("Sklearn")) -.-> sklearn/DataPreprocessingandFeatureEngineeringGroup(["Data Preprocessing and Feature Engineering"]) sklearn(("Sklearn")) -.-> sklearn/ModelSelectionandEvaluationGroup(["Model Selection and Evaluation"]) sklearn(("Sklearn")) -.-> sklearn/UtilitiesandDatasetsGroup(["Utilities and Datasets"]) sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/svm("Support Vector Machines") sklearn/DataPreprocessingandFeatureEngineeringGroup -.-> sklearn/feature_selection("Feature Selection") sklearn/DataPreprocessingandFeatureEngineeringGroup -.-> sklearn/pipeline("Pipeline") sklearn/ModelSelectionandEvaluationGroup -.-> sklearn/model_selection("Model Selection") sklearn/ModelSelectionandEvaluationGroup -.-> sklearn/metrics("Metrics") sklearn/UtilitiesandDatasetsGroup -.-> sklearn/datasets("Datasets") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/svm -.-> lab-49126{{"Construyendo tuberías de aprendizaje automático con Scikit-Learn"}} sklearn/feature_selection -.-> lab-49126{{"Construyendo tuberías de aprendizaje automático con Scikit-Learn"}} sklearn/pipeline -.-> lab-49126{{"Construyendo tuberías de aprendizaje automático con Scikit-Learn"}} sklearn/model_selection -.-> lab-49126{{"Construyendo tuberías de aprendizaje automático con Scikit-Learn"}} sklearn/metrics -.-> lab-49126{{"Construyendo tuberías de aprendizaje automático con Scikit-Learn"}} sklearn/datasets -.-> lab-49126{{"Construyendo tuberías de aprendizaje automático con Scikit-Learn"}} ml/sklearn -.-> lab-49126{{"Construyendo tuberías de aprendizaje automático con Scikit-Learn"}} end

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.