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.
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.