Finaler Schätzer
Pipeline wurde zuvor für die Vorverarbeitung verwendet, aber der eigentliche Zweck besteht darin, die Vorverarbeitung mit einem abschließenden Prädiktor zu verketten. Der letzte Schritt in einer Pipeline kann jeder beliebige Schätzer sein (typischerweise ein Modell), der Vorhersagen erzeugt.
Beim Aufruf von .fit() führt jeder Transformer .fit_transform() aus.
Beim Aufruf von .predict() verwendet die Pipeline .transform(), bevor die Daten an den finalen Schätzer weitergegeben werden.
Dies ist erforderlich, da neue Daten exakt wie die Trainingsdaten transformiert werden müssen.
Warum .transform()?
Die Verwendung von .fit_transform() auf neuen Daten könnte Kodierungen ändern (z. B. im OneHotEncoder), was zu nicht übereinstimmenden Spalten und unzuverlässigen Vorhersagen führt.
.transform() gewährleistet eine konsistente Vorverarbeitung, ignoriert unbekannte Kategorien und behält die gleiche Spaltenreihenfolge bei.
So sieht ein one-hot codierter Trainingsdatensatz 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ürde die neue Datenbasis inkonsistent zum Trainingsdatensatz transformiert werden, 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
Fügen Sie das Modell einfach als letzten Schritt der Pipeline hinzu:
pipe = make_pipeline(
ct,
SimpleImputer(strategy='most_frequent'),
StandardScaler(),
KNeighborsClassifier()
)
pipe.fit(X, y)
pipe.predict(X_new)
Dies ermöglicht es, den gesamten Workflow—Vorverarbeitung + Vorhersage—mit einem einzigen Aufruf auszuführen.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Großartig!
Completion Rate verbessert auf 4.55
Finaler Schätzer
Swipe um das Menü anzuzeigen
Pipeline wurde zuvor für die Vorverarbeitung verwendet, aber der eigentliche Zweck besteht darin, die Vorverarbeitung mit einem abschließenden Prädiktor zu verketten. Der letzte Schritt in einer Pipeline kann jeder beliebige Schätzer sein (typischerweise ein Modell), der Vorhersagen erzeugt.
Beim Aufruf von .fit() führt jeder Transformer .fit_transform() aus.
Beim Aufruf von .predict() verwendet die Pipeline .transform(), bevor die Daten an den finalen Schätzer weitergegeben werden.
Dies ist erforderlich, da neue Daten exakt wie die Trainingsdaten transformiert werden müssen.
Warum .transform()?
Die Verwendung von .fit_transform() auf neuen Daten könnte Kodierungen ändern (z. B. im OneHotEncoder), was zu nicht übereinstimmenden Spalten und unzuverlässigen Vorhersagen führt.
.transform() gewährleistet eine konsistente Vorverarbeitung, ignoriert unbekannte Kategorien und behält die gleiche Spaltenreihenfolge bei.
So sieht ein one-hot codierter Trainingsdatensatz 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ürde die neue Datenbasis inkonsistent zum Trainingsdatensatz transformiert werden, 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
Fügen Sie das Modell einfach als letzten Schritt der Pipeline hinzu:
pipe = make_pipeline(
ct,
SimpleImputer(strategy='most_frequent'),
StandardScaler(),
KNeighborsClassifier()
)
pipe.fit(X, y)
pipe.predict(X_new)
Dies ermöglicht es, den gesamten Workflow—Vorverarbeitung + Vorhersage—mit einem einzigen Aufruf auszuführen.
Danke für Ihr Feedback!