Usando la API set_output

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 este laboratorio, aprenderemos a usar la API set_output en Scikit-Learn para configurar los transformadores para que produzcan DataFrames de pandas. Esta característica es útil cuando se trabaja con datos heterogéneos y tuberías en Scikit-Learn.

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 su retroalimentación después de la sesión y resolveremos el problema rápidamente para usted.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/DataPreprocessingandFeatureEngineeringGroup(["Data Preprocessing and Feature Engineering"]) sklearn(("Sklearn")) -.-> sklearn/ModelSelectionandEvaluationGroup(["Model Selection and Evaluation"]) sklearn(("Sklearn")) -.-> sklearn/UtilitiesandDatasetsGroup(["Utilities and Datasets"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/linear_model("Linear Models") sklearn/DataPreprocessingandFeatureEngineeringGroup -.-> sklearn/preprocessing("Preprocessing and Normalization") sklearn/DataPreprocessingandFeatureEngineeringGroup -.-> sklearn/feature_selection("Feature Selection") sklearn/DataPreprocessingandFeatureEngineeringGroup -.-> sklearn/pipeline("Pipeline") sklearn/DataPreprocessingandFeatureEngineeringGroup -.-> sklearn/impute("Impute") sklearn/ModelSelectionandEvaluationGroup -.-> sklearn/model_selection("Model Selection") sklearn/ModelSelectionandEvaluationGroup -.-> sklearn/compose("Composite Estimators") sklearn/UtilitiesandDatasetsGroup -.-> sklearn/datasets("Datasets") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/linear_model -.-> lab-49285{{"Usando la API set_output"}} sklearn/preprocessing -.-> lab-49285{{"Usando la API set_output"}} sklearn/feature_selection -.-> lab-49285{{"Usando la API set_output"}} sklearn/pipeline -.-> lab-49285{{"Usando la API set_output"}} sklearn/impute -.-> lab-49285{{"Usando la API set_output"}} sklearn/model_selection -.-> lab-49285{{"Usando la API set_output"}} sklearn/compose -.-> lab-49285{{"Usando la API set_output"}} sklearn/datasets -.-> lab-49285{{"Usando la API set_output"}} ml/sklearn -.-> lab-49285{{"Usando la API set_output"}} end

Cargar el conjunto de datos Iris

Primero, cargaremos el conjunto de datos Iris como un DataFrame para demostrar la API set_output.

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

X, y = load_iris(as_frame=True, return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, random_state=0)
X_train.head()

Configurar un transformador para que produzca DataFrames

Para configurar un estimador como preprocessing.StandardScaler para que devuelva DataFrames, llame a set_output.

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler().set_output(transform="pandas")

scaler.fit(X_train)
X_test_scaled = scaler.transform(X_test)
X_test_scaled.head()

Configurar transform después de fit

Se puede llamar a set_output después de fit para configurar transform después de hecho.

scaler2 = StandardScaler()

scaler2.fit(X_train)
X_test_np = scaler2.transform(X_test)
print(f"Tipo de salida predeterminado: {type(X_test_np).__name__}")

scaler2.set_output(transform="pandas")
X_test_df = scaler2.transform(X_test)
print(f"Tipo de salida de pandas configurado: {type(X_test_df).__name__}")

Configurar una tubería para que produzca DataFrames

En una pipeline.Pipeline, set_output configura todos los pasos para que produzcan DataFrames.

from sklearn.pipeline import make_pipeline
from sklearn.linear_model import LogisticRegression
from sklearn.feature_selection import SelectPercentile

clf = make_pipeline(
    StandardScaler(), SelectPercentile(percentile=75), LogisticRegression()
)
clf.set_output(transform="pandas")
clf.fit(X_train, y_train)

Cargar el conjunto de datos del Titanic

A continuación, cargaremos el conjunto de datos del Titanic para demostrar set_output con compose.ColumnTransformer y datos heterogéneos.

from sklearn.datasets import fetch_openml

X, y = fetch_openml(
    "titanic", version=1, as_frame=True, return_X_y=True, parser="pandas"
)
X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y)

Configurar set_output globalmente

La API set_output se puede configurar globalmente utilizando set_config y estableciendo transform_output en "pandas".

from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder, StandardScaler
from sklearn.impute import SimpleImputer
from sklearn import set_config

set_config(transform_output="pandas")

num_pipe = make_pipeline(SimpleImputer(), StandardScaler())
num_cols = ["age", "fare"]
ct = ColumnTransformer(
    (
        ("numérica", num_pipe, num_cols),
        (
            "categórica",
            OneHotEncoder(
                sparse_output=False, drop="if_binary", handle_unknown="ignore"
            ),
            ["embarked", "sex", "pclass"],
        ),
    ),
    verbose_feature_names_out=False,
)
clf = make_pipeline(ct, SelectPercentile(percentile=50), LogisticRegression())
clf.fit(X_train, y_train)

Configurar set_output con config_context

Cuando se configura el tipo de salida con config_context, lo que cuenta es la configuración en el momento en que se llaman a transform o fit_transform.

scaler = StandardScaler()
scaler.fit(X_train[num_cols])

with config_context(transform_output="pandas"):
    X_test_scaled = scaler.transform(X_test[num_cols])
X_test_scaled.head()

Resumen

En este laboratorio, aprendimos cómo usar la API set_output en Scikit-Learn para configurar transformadores para que produzcan DataFrames de pandas. Demostramos cómo configurar un estimador para que produzca DataFrames, configurar una tubería para que produzca DataFrames y configurar set_output globalmente con set_config. También aprendimos cómo configurar set_output con config_context.