Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Abschließender Schätzer | Pipelines
ML-Einführung Mit Scikit-Learn

bookAbschließender Schätzer

Bis zu diesem Punkt wurde die Pipeline hauptsächlich für die Vorverarbeitung verwendet. Die Vorverarbeitung ist jedoch nur ein Zwischenschritt. Nachdem die Daten transformiert wurden, werden sie typischerweise an einen Prädiktor (Modell) weitergegeben, um Ergebnisse oder Vorhersagen zu erzeugen.

Die Pipeline-Klasse unterstützt dies, indem sie es ermöglicht, dass der Estimator—häufig ein Prädiktor—der letzte Schritt ist. Die folgende Abbildung zeigt, wie eine Pipeline funktioniert, wenn ihre letzte Komponente ein Prädiktor ist.

Note
Hinweis

Wenn die .fit()-Methode einer Pipeline aufgerufen wird, führt jeder Transformer .fit_transform() aus. Im Gegensatz dazu wendet die Pipeline bei einem Aufruf von .predict() .transform() auf die Daten an, bevor sie an den Prädiktor übergeben werden.

Die .predict()-Methode wird hauptsächlich für neue Instanzen verwendet, die während .fit() denselben Transformationen wie die Trainingsdaten unterzogen werden müssen.

Warum .transform()?

Die Pipeline wendet .transform() anstelle von .fit_transform() an, wenn neue Dateninstanzen für Vorhersagen verarbeitet werden. Dies gewährleistet eine konsistente Transformation zwischen Trainings- und Testdaten.

Beispielsweise enthält ein Datensatz ein kategoriales Merkmal 'Color', das vor dem Modelltraining kodiert werden muss:

So sieht die one-hot codierte Trainingsdaten aus:

Dies sind die neuen Instanzen zur Vorhersage:

Wenn .fit_transform() auf neue Instanzen angewendet würde, könnte der OneHotEncoder Spalten in einer anderen Reihenfolge erzeugen oder sogar neue hinzufügen. Dadurch würden die neuen Daten inkonsistent mit dem Trainingssatz transformiert, was die Vorhersagen unzuverlässig macht.

Die Verwendung von .transform() stellt jedoch sicher, dass die neuen Daten genau wie die Trainingsdaten kodiert werden, wobei Kategorien ignoriert werden, die während des Trainings nicht gesehen wurden:

Hinzufügen des finalen Schätzers

Um den finalen Schätzer zu verwenden, muss dieser lediglich als letzter Schritt der Pipeline hinzugefügt werden. Im nächsten Kapitel wird beispielsweise ein KNeighborsClassifier-Modell als finaler Schätzer verwendet.

Die Syntax lautet wie folgt:

# Creating a pipeline
pipe = make_pipeline(ct, 
                     SimpleImputer(strategy='most_frequent'),
					 StandardScaler(),
                     KNeighborsClassifier()
                    )
# Training a model using pipeline
pipe.fit(X, y)
# Predicting new instances
pipe.predict(X_new)
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 5

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Awesome!

Completion rate improved to 3.13

bookAbschließender Schätzer

Swipe um das Menü anzuzeigen

Bis zu diesem Punkt wurde die Pipeline hauptsächlich für die Vorverarbeitung verwendet. Die Vorverarbeitung ist jedoch nur ein Zwischenschritt. Nachdem die Daten transformiert wurden, werden sie typischerweise an einen Prädiktor (Modell) weitergegeben, um Ergebnisse oder Vorhersagen zu erzeugen.

Die Pipeline-Klasse unterstützt dies, indem sie es ermöglicht, dass der Estimator—häufig ein Prädiktor—der letzte Schritt ist. Die folgende Abbildung zeigt, wie eine Pipeline funktioniert, wenn ihre letzte Komponente ein Prädiktor ist.

Note
Hinweis

Wenn die .fit()-Methode einer Pipeline aufgerufen wird, führt jeder Transformer .fit_transform() aus. Im Gegensatz dazu wendet die Pipeline bei einem Aufruf von .predict() .transform() auf die Daten an, bevor sie an den Prädiktor übergeben werden.

Die .predict()-Methode wird hauptsächlich für neue Instanzen verwendet, die während .fit() denselben Transformationen wie die Trainingsdaten unterzogen werden müssen.

Warum .transform()?

Die Pipeline wendet .transform() anstelle von .fit_transform() an, wenn neue Dateninstanzen für Vorhersagen verarbeitet werden. Dies gewährleistet eine konsistente Transformation zwischen Trainings- und Testdaten.

Beispielsweise enthält ein Datensatz ein kategoriales Merkmal 'Color', das vor dem Modelltraining kodiert werden muss:

So sieht die one-hot codierte Trainingsdaten aus:

Dies sind die neuen Instanzen zur Vorhersage:

Wenn .fit_transform() auf neue Instanzen angewendet würde, könnte der OneHotEncoder Spalten in einer anderen Reihenfolge erzeugen oder sogar neue hinzufügen. Dadurch würden die neuen Daten inkonsistent mit dem Trainingssatz transformiert, was die Vorhersagen unzuverlässig macht.

Die Verwendung von .transform() stellt jedoch sicher, dass die neuen Daten genau wie die Trainingsdaten kodiert werden, wobei Kategorien ignoriert werden, die während des Trainings nicht gesehen wurden:

Hinzufügen des finalen Schätzers

Um den finalen Schätzer zu verwenden, muss dieser lediglich als letzter Schritt der Pipeline hinzugefügt werden. Im nächsten Kapitel wird beispielsweise ein KNeighborsClassifier-Modell als finaler Schätzer verwendet.

Die Syntax lautet wie folgt:

# Creating a pipeline
pipe = make_pipeline(ct, 
                     SimpleImputer(strategy='most_frequent'),
					 StandardScaler(),
                     KNeighborsClassifier()
                    )
# Training a model using pipeline
pipe.fit(X, y)
# Predicting new instances
pipe.predict(X_new)
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 5
some-alt