Utilisation de l'API set_output

Machine LearningMachine LearningBeginner
Pratiquer maintenant

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

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, nous allons apprendre à utiliser l'API set_output dans Scikit-Learn pour configurer les transformateurs pour produire des DataFrames pandas. Cette fonctionnalité est utile lorsqu'on travaille avec des données hétérogènes et des pipelines dans Scikit-Learn.

Conseils sur la machine virtuelle

Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Notebook pour accéder à Jupyter Notebook pour pratiquer.

Parfois, vous devrez peut-être attendre quelques secondes pour que Jupyter Notebook ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limites de Jupyter Notebook.

Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez votre feedback après la session, et nous réglerons rapidement le problème pour vous.

Charger l'ensemble de données Iris

Tout d'abord, nous allons charger l'ensemble de données Iris sous forme de DataFrame pour démontrer l'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()

Configurer un transformateur pour produire des DataFrames

Pour configurer un estimateur tel que preprocessing.StandardScaler pour renvoyer des DataFrames, appelez 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()

Configurer transform après fit

set_output peut être appelé après fit pour configurer transform après coup.

scaler2 = StandardScaler()

scaler2.fit(X_train)
X_test_np = scaler2.transform(X_test)
print(f"Type de sortie par défaut : {type(X_test_np).__name__}")

scaler2.set_output(transform="pandas")
X_test_df = scaler2.transform(X_test)
print(f"Type de sortie pandas configuré : {type(X_test_df).__name__}")

Configurer un pipeline pour produire des DataFrames

Dans un pipeline.Pipeline, set_output configure toutes les étapes pour produire des 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)

Charger l'ensemble de données Titanic

Ensuite, nous allons charger l'ensemble de données Titanic pour démontrer set_output avec compose.ColumnTransformer et des données hétérogènes.

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)

Configurer set_output globalement

L'API set_output peut être configurée globalement en utilisant set_config et en définissant transform_output sur "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érique", num_pipe, num_cols),
        (
            "catégorique",
            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)

Configurer set_output avec config_context

Lorsque l'on configure le type de sortie avec config_context, c'est la configuration au moment où transform ou fit_transform sont appelés qui compte.

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()

Récapitulatif

Dans ce laboratoire, nous avons appris à utiliser l'API set_output dans Scikit-Learn pour configurer les transformateurs afin qu'ils produisent des DataFrames pandas. Nous avons démontré comment configurer un estimateur pour produire des DataFrames, configurer un pipeline pour produire des DataFrames et configurer set_output globalement avec set_config. Nous avons également appris comment configurer set_output avec config_context.