Verwendung der Set_output-API

Machine LearningMachine LearningBeginner
Jetzt üben

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

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen wir, wie wir die set_output-API in Scikit-Learn verwenden, um Transformatoren so zu konfigurieren, dass sie pandas DataFrames ausgeben. Diese Funktion ist nützlich, wenn es um heterogene Daten und Pipelines in Scikit-Learn geht.

Tipps für die VM

Nachdem der VM-Start abgeschlossen ist, klicken Sie in der linken oberen Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu nutzen.

Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund der Einschränkungen in Jupyter Notebook nicht automatisiert werden.

Wenn Sie bei der Lernphase Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.

Lade den Iris-Datensatz

Zunächst laden wir den Iris-Datensatz als DataFrame, um die set_output-API zu demonstrieren.

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

Konfiguriere einen Transformator, um DataFrames auszugeben

Um einen Schätzer wie preprocessing.StandardScaler so zu konfigurieren, dass er DataFrames zurückgibt, rufe set_output auf.

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

Konfiguriere transform nach fit

set_output kann nach fit aufgerufen werden, um transform nachträglich zu konfigurieren.

scaler2 = StandardScaler()

scaler2.fit(X_train)
X_test_np = scaler2.transform(X_test)
print(f"Standardausgabetyp: {type(X_test_np).__name__}")

scaler2.set_output(transform="pandas")
X_test_df = scaler2.transform(X_test)
print(f"Konfigurierter pandas-Ausgabetyp: {type(X_test_df).__name__}")

Konfiguriere einen Pipeline, um DataFrames auszugeben

In einer pipeline.Pipeline konfiguriert set_output alle Schritte, um DataFrames auszugeben.

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)

Lade den Titanic-Datensatz

Als nächstes laden wir den Titanic-Datensatz, um set_output mit compose.ColumnTransformer und heterogenen Daten zu demonstrieren.

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)

Konfiguriere set_output global

Die set_output-API kann global konfiguriert werden, indem man set_config verwendet und transform_output auf "pandas" setzt.

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(
    (
        ("numerisch", num_pipe, num_cols),
        (
            "kategorisch",
            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)

Konfiguriere set_output mit config_context

Wenn die Ausgabetyp-Konfiguration mit config_context erfolgt, zählt die Konfiguration zu dem Zeitpunkt, zu dem transform oder fit_transform aufgerufen werden.

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

Zusammenfassung

In diesem Lab haben wir gelernt, wie man die set_output-API in Scikit-Learn verwendet, um Transformatoren so zu konfigurieren, dass sie pandas DataFrames ausgeben. Wir haben gezeigt, wie man einen Schätzer so konfiguriert, dass er DataFrames ausgibt, eine Pipeline so konfiguriert, dass sie DataFrames ausgibt, und set_output global mit set_config konfiguriert. Wir haben auch gelernt, wie man set_output mit config_context konfiguriert.