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
Ein Grid Search über eine Pipeline mit einem Klassifizierer erstellen
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.