Scikit-Learn Pipelines erstellen

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

Dieses Lab ist ein Schritt-für-Schritt-Leitfaden über das Erstellen und Anzeigen von Pipelines in Scikit-Learn.

Tipps für die VM

Nachdem der VM-Start abgeschlossen ist, klicken Sie in der oberen linken 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 von 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.

Einfache Pipeline mit einem Vorverarbeitungsschritt und einem Klassifizierer erstellen

In diesem Schritt werden wir eine einfache Pipeline mit einem Vorverarbeitungsschritt und einem Klassifizierer erstellen und seine visuelle Darstellung anzeigen.

Zunächst importieren wir die erforderlichen Module:

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn import set_config

Als nächstes definieren wir die Schritte der Pipeline:

steps = [
    ("preprocessing", StandardScaler()),
    ("classifier", LogisticRegression()),
]

Dann erstellen wir die Pipeline:

pipe = Pipeline(steps)

Schließlich zeigen wir die visuelle Darstellung der Pipeline an:

set_config(display="diagram")
pipe

Ein Pipeline erstellen, die mehrere Vorverarbeitungsschritte und einen Klassifizierer verkettet

In diesem Schritt werden wir eine Pipeline erstellen, die mehrere Vorverarbeitungsschritte und einen Klassifizierer umfasst, und deren visuelle Darstellung anzeigen.

Zunächst importieren wir die erforderlichen Module:

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler, PolynomialFeatures
from sklearn.linear_model import LogisticRegression

Als nächstes definieren wir die Schritte der Pipeline:

steps = [
    ("standard_scaler", StandardScaler()),
    ("polynomial", PolynomialFeatures(degree=3)),
    ("classifier", LogisticRegression(C=2.0)),
]

Dann erstellen wir die Pipeline:

pipe = Pipeline(steps)

Schließlich zeigen wir die visuelle Darstellung der Pipeline an:

pipe

Ein Pipeline mit Dimensionalitätsreduzierung und Klassifizierer erstellen

In diesem Schritt werden wir eine Pipeline mit einem Dimensionalitätsreduzierungsschritt und einem Klassifizierer erstellen und seine visuelle Darstellung anzeigen.

Zunächst importieren wir die erforderlichen Module:

from sklearn.pipeline import Pipeline
from sklearn.svm import SVC
from sklearn.decomposition import PCA

Als nächstes definieren wir die Schritte der Pipeline:

steps = [("reduce_dim", PCA(n_components=4)), ("classifier", SVC(kernel="linear"))]

Dann erstellen wir die Pipeline:

pipe = Pipeline(steps)

Schließlich zeigen wir die visuelle Darstellung der Pipeline an:

pipe

Ein komplexes Pipeline erstellen, das einen Spaltentransformator verkettet

In diesem Schritt werden wir eine komplexe Pipeline mit einem Spaltentransformator und einem Klassifizierer erstellen und seine visuelle Darstellung anzeigen.

Zunächst importieren wir die erforderlichen Module:

import numpy as np
from sklearn.pipeline import make_pipeline
from sklearn.pipeline import Pipeline
from sklearn.impute import SimpleImputer
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder, StandardScaler
from sklearn.linear_model import LogisticRegression

Als nächstes definieren wir die Vorverarbeitungsschritte für die numerischen und kategorischen Merkmale:

numeric_preprocessor = Pipeline(
    steps=[
        ("imputation_mean", SimpleImputer(missing_values=np.nan, strategy="mean")),
        ("scaler", StandardScaler()),
    ]
)

categorical_preprocessor = Pipeline(
    steps=[
        (
            "imputation_constant",
            SimpleImputer(fill_value="missing", strategy="constant"),
        ),
        ("onehot", OneHotEncoder(handle_unknown="ignore")),
    ]
)

Dann erstellen wir den Spaltentransformator:

preprocessor = ColumnTransformer(
    [
        ("categorical", categorical_preprocessor, ["state", "gender"]),
        ("numerical", numeric_preprocessor, ["age", "weight"]),
    ]
)

Als nächstes erstellen wir die Pipeline:

pipe = make_pipeline(preprocessor, LogisticRegression(max_iter=500))

Schließlich zeigen wir die visuelle Darstellung der Pipeline an:

pipe

In diesem Schritt werden wir einen Grid Search über eine Pipeline mit einem Klassifizierer erstellen und seine visuelle Darstellung anzeigen.

Zunächst importieren wir die erforderlichen Module:

import numpy as np
from sklearn.pipeline import make_pipeline
from sklearn.pipeline import Pipeline
from sklearn.impute import SimpleImputer
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder, StandardScaler
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV

Als nächstes definieren wir die Vorverarbeitungsschritte für die numerischen und kategorischen Merkmale:

numeric_preprocessor = Pipeline(
    steps=[
        ("imputation_mean", SimpleImputer(missing_values=np.nan, strategy="mean")),
        ("scaler", StandardScaler()),
    ]
)

categorical_preprocessor = Pipeline(
    steps=[
        (
            "imputation_constant",
            SimpleImputer(fill_value="missing", strategy="constant"),
        ),
        ("onehot", OneHotEncoder(handle_unknown="ignore")),
    ]
)

Dann erstellen wir den Spaltentransformator:

preprocessor = ColumnTransformer(
    [
        ("categorical", categorical_preprocessor, ["state", "gender"]),
        ("numerical", numeric_preprocessor, ["age", "weight"]),
    ]
)

Als nächstes erstellen wir die Pipeline:

pipe = Pipeline(
    steps=[("preprocessor", preprocessor), ("classifier", RandomForestClassifier())]
)

Dann definieren wir das Parameter-Gitter für den Grid Search:

param_grid = {
    "classifier__n_estimators": [200, 500],
    "classifier__max_features": ["auto", "sqrt", "log2"],
    "classifier__max_depth": [4, 5, 6, 7, 8],
    "classifier__criterion": ["gini", "entropy"],
}

Schließlich erstellen wir den Grid Search:

grid_search = GridSearchCV(pipe, param_grid=param_grid, n_jobs=1)

Und zeigen die visuelle Darstellung des Grid Searchs an:

grid_search

Zusammenfassung

In diesem Lab wurde ein schrittweise Leitfaden zur Erstellung und Darstellung von Pipelines in Scikit-Learn bereitgestellt. Wir haben einfache Pipelines mit einem Vorverarbeitungsschritt und einem Klassifizierer, Pipelines, die mehrere Vorverarbeitungsschritte und einen Klassifizierer verkettet, Pipelines mit Dimensionalitätsreduzierung und einem Klassifizierer, komplexe Pipelines, die einen Spaltentransformator und einen Klassifizierer verkettet, und Grid-Searches über Pipelines mit einem Klassifizierer behandelt.