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.