Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Eindschatter | Pipelines
ML-Introductie met Scikit-learn

bookEindschatter

Tot nu toe is de Pipeline voornamelijk gebruikt voor preprocessing. Preprocessing is echter slechts een tussenstap. Nadat de data is getransformeerd, wordt deze doorgaans doorgegeven aan een voorspeller (model) om resultaten of voorspellingen te genereren.

De Pipeline-klasse ondersteunt dit door toe te staan dat de estimator—vaak een voorspeller—de laatste stap is. De onderstaande illustratie laat zien hoe een Pipeline werkt wanneer het laatste component een voorspeller is.

Note
Opmerking

Wanneer de .fit()-methode van een pipeline wordt aangeroepen, voert elke transformer .fit_transform() uit. Daarentegen, wanneer .predict() wordt aangeroepen, past de pipeline .transform() toe op de data voordat deze naar de voorspeller wordt gestuurd.

De .predict()-methode wordt voornamelijk gebruikt voor nieuwe instanties, die dezelfde transformaties moeten ondergaan als de trainingsdata tijdens .fit().

Waarom .transform()?

De pipeline past .transform() toe in plaats van .fit_transform() bij het verwerken van nieuwe data-instanties voor voorspellingen. Dit garandeert een consistente transformatie tussen trainings- en testsets.

Beschouw bijvoorbeeld een dataset met een categorisch kenmerk 'Color' dat gecodeerd moet worden voordat het model getraind wordt:

Zo ziet de one-hot gecodeerde trainingsdata eruit:

Hier zijn de nieuwe instanties om te voorspellen:

Als .fit_transform() zou worden toegepast op nieuwe instanties, kan de OneHotEncoder kolommen in een andere volgorde genereren of zelfs nieuwe toevoegen. Hierdoor zou de nieuwe data niet consistent met de trainingsset worden getransformeerd, waardoor voorspellingen onbetrouwbaar worden.

Het gebruik van .transform() zorgt er echter voor dat de nieuwe data exact hetzelfde wordt gecodeerd als de trainingsdata, waarbij categorieën die niet tijdens de training zijn gezien, worden genegeerd:

De Finale Estimator Toevoegen

Om de finale estimator te gebruiken, hoeft u deze alleen als laatste stap van de pipeline toe te voegen. In het volgende hoofdstuk gebruiken we bijvoorbeeld een KNeighborsClassifier-model als finale estimator.

De syntaxis is als volgt:

# 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)
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 3. Hoofdstuk 5

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Suggested prompts:

Can you explain why using .fit_transform() on new data is problematic?

How does the pipeline handle unseen categories during prediction?

Can you give more examples of using a final estimator in a pipeline?

Awesome!

Completion rate improved to 3.13

bookEindschatter

Veeg om het menu te tonen

Tot nu toe is de Pipeline voornamelijk gebruikt voor preprocessing. Preprocessing is echter slechts een tussenstap. Nadat de data is getransformeerd, wordt deze doorgaans doorgegeven aan een voorspeller (model) om resultaten of voorspellingen te genereren.

De Pipeline-klasse ondersteunt dit door toe te staan dat de estimator—vaak een voorspeller—de laatste stap is. De onderstaande illustratie laat zien hoe een Pipeline werkt wanneer het laatste component een voorspeller is.

Note
Opmerking

Wanneer de .fit()-methode van een pipeline wordt aangeroepen, voert elke transformer .fit_transform() uit. Daarentegen, wanneer .predict() wordt aangeroepen, past de pipeline .transform() toe op de data voordat deze naar de voorspeller wordt gestuurd.

De .predict()-methode wordt voornamelijk gebruikt voor nieuwe instanties, die dezelfde transformaties moeten ondergaan als de trainingsdata tijdens .fit().

Waarom .transform()?

De pipeline past .transform() toe in plaats van .fit_transform() bij het verwerken van nieuwe data-instanties voor voorspellingen. Dit garandeert een consistente transformatie tussen trainings- en testsets.

Beschouw bijvoorbeeld een dataset met een categorisch kenmerk 'Color' dat gecodeerd moet worden voordat het model getraind wordt:

Zo ziet de one-hot gecodeerde trainingsdata eruit:

Hier zijn de nieuwe instanties om te voorspellen:

Als .fit_transform() zou worden toegepast op nieuwe instanties, kan de OneHotEncoder kolommen in een andere volgorde genereren of zelfs nieuwe toevoegen. Hierdoor zou de nieuwe data niet consistent met de trainingsset worden getransformeerd, waardoor voorspellingen onbetrouwbaar worden.

Het gebruik van .transform() zorgt er echter voor dat de nieuwe data exact hetzelfde wordt gecodeerd als de trainingsdata, waarbij categorieën die niet tijdens de training zijn gezien, worden genegeerd:

De Finale Estimator Toevoegen

Om de finale estimator te gebruiken, hoeft u deze alleen als laatste stap van de pipeline toe te voegen. In het volgende hoofdstuk gebruiken we bijvoorbeeld een KNeighborsClassifier-model als finale estimator.

De syntaxis is als volgt:

# 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)
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 3. Hoofdstuk 5
some-alt