TargetEncoder#

class sklearn.preprocessing.TargetEncoder(categories='auto', target_type='auto', smooth='auto', cv=5, shuffle=True, random_state=None)[Quelle]#

Ziel-Encoder für Regressions- und Klassifikationsziele.

Jede Kategorie wird basierend auf einer geschrumpften Schätzung der durchschnittlichen Zielwerte für Beobachtungen, die zu dieser Kategorie gehören, kodiert. Das Kodierungsschema vermischt den globalen Zielmittelwert mit dem Zielmittelwert, bedingt durch den Wert der Kategorie (siehe [MIC]).

Wenn der Zieltyp "multiclass" ist, basieren die Kodierungen auf der bedingten Wahrscheinlichkeitsschätzung für jede Klasse. Das Ziel wird zuerst mittels des "one-vs-all"-Schemas über LabelBinarizer binarisiert, dann werden der durchschnittliche Zielwert für jede Klasse und jede Kategorie für die Kodierung verwendet, was zu n_features * n_classes kodierten Ausgabemerkmalen führt.

TargetEncoder berücksichtigt fehlende Werte wie np.nan oder None als eine weitere Kategorie und kodiert sie wie jede andere Kategorie. Kategorien, die während fit nicht gesehen werden, werden mit dem Zielmittelwert kodiert, d.h. target_mean_.

Eine Demo zur Bedeutung der internen Kreuzvalidierung von TargetEncoder finden Sie unter Target Encoder’s Internal Cross fitting. Einen Vergleich verschiedener Encoder finden Sie unter Comparing Target Encoder with Other Encoders. Lesen Sie mehr im Benutzerhandbuch.

Hinweis

fit(X, y).transform(X) ist nicht gleich fit_transform(X, y), da bei fit_transform ein Kreuzvalidierungs-Schema zur Kodierung verwendet wird. Details finden Sie im Benutzerhandbuch.

Hinzugefügt in Version 1.3.

Parameter:
categories"auto" oder Liste von Form (n_features,) von array-ähnlich, Standard="auto"

Kategorien (eindeutige Werte) pro Merkmal

  • "auto" : Kategorien werden automatisch aus den Trainingsdaten ermittelt.

  • Liste : categories[i] enthält die erwarteten Kategorien in der i-ten Spalte. Die übergebenen Kategorien sollten innerhalb eines einzelnen Merkmals keine Strings und numerische Werte mischen und bei numerischen Werten sortiert sein.

Die verwendeten Kategorien werden im passenden Attribut categories_ gespeichert.

target_type{„auto“, „continuous“, „binary“, „multiclass“}, Standard=„auto“

Typ des Ziels.

  • "auto" : Der Zieltyp wird mit type_of_target abgeleitet.

  • "continuous" : Kontinuierliches Ziel

  • "binary" : Binäres Ziel

  • "multiclass" : Multiklassen-Ziel

Hinweis

Der mit "auto" abgeleitete Zieltyp ist möglicherweise nicht der gewünschte Zieltyp für die Modellierung. Wenn das Ziel beispielsweise aus ganzen Zahlen zwischen 0 und 100 besteht, leitet type_of_target das Ziel als "multiclass" ab. In diesem Fall gibt die Einstellung von target_type="continuous" das Ziel als Regressionsproblem an. Das Attribut target_type_ gibt den vom Encoder verwendeten Zieltyp an.

Geändert in Version 1.4: Die Option 'multiclass' wurde hinzugefügt.

smooth"auto" oder float, Standard="auto"

Das Ausmaß der Mischung des bedingten Zielmittelwerts mit dem globalen Zielmittelwert. Ein größerer smooth-Wert gibt dem globalen Zielmittelwert mehr Gewicht. Wenn "auto", wird smooth auf einen empirischen Bayes-Schätzer gesetzt.

cvint, Standard=5

Bestimmt die Anzahl der Folds in der Kreuzvalidierungs-Strategie, die in fit_transform verwendet wird. Für Klassifizierungsziele wird StratifiedKFold verwendet, und für kontinuierliche Ziele wird KFold verwendet.

shufflebool, Standard=True

Ob die Daten in fit_transform vor der Aufteilung in Folds gemischt werden sollen. Beachten Sie, dass die Samples innerhalb jedes Splits nicht gemischt werden.

random_stateint, RandomState-Instanz oder None, default=None

Wenn shuffle True ist, beeinflusst random_state die Reihenfolge der Indizes, die die Zufälligkeit jedes Folds steuert. Andernfalls hat dieser Parameter keine Auswirkung. Übergeben Sie eine Ganzzahl für reproduzierbare Ergebnisse über mehrere Funktionsaufrufe hinweg. Siehe Glossar.

Attribute:
encodings_Liste von Form (n_features,) oder (n_features * n_classes) von ndarray

Kodierungen, die auf allen X gelernt wurden. Für Merkmal i sind encodings_[i] die Kodierungen, die den in categories_[i] aufgeführten Kategorien entsprechen. Wenn target_type_ "multiclass" ist, wird die Kodierung für Merkmal i und Klasse j in encodings_[j + (i * len(classes_))] gespeichert. Z.B. für 2 Merkmale (f) und 3 Klassen (c) sind die Kodierungen geordnet: f0_c0, f0_c1, f0_c2, f1_c0, f1_c1, f1_c2.

categories_Liste von Form (n_features,) von ndarray

Die Kategorien jedes Eingabemerkmals, die während des Anpassens ermittelt oder in categories angegeben wurden (in der Reihenfolge der Merkmale in X und entsprechend der Ausgabe von transform).

target_type_str

Typ des Ziels.

target_mean_float

Der Gesamtdurchschnitt des Ziels. Dieser Wert wird nur in transform verwendet, um Kategorien zu kodieren.

n_features_in_int

Anzahl der während des fits gesehenen Merkmale.

feature_names_in_ndarray mit Form (n_features_in_,)

Namen der während fit gesehenen Merkmale. Nur definiert, wenn X Merkmalnamen hat, die alle Zeichenketten sind.

classes_ndarray oder None

Wenn target_type_ "binary" oder "multiclass" ist, enthält dies die Bezeichnung für jede Klasse, andernfalls None.

Siehe auch

OrdinalEncoder

Führt eine ordinale (ganzzahlige) Kodierung der kategorialen Merkmale durch. Im Gegensatz zum TargetEncoder ist diese Kodierung nicht überwacht. Die Behandlung der resultierenden Kodierung als numerische Merkmale führt daher zu willkürlich geordneten Werten und typischerweise zu einer geringeren prädiktiven Leistung, wenn sie als Vorverarbeitung für einen Klassifikator oder Regressor verwendet wird.

OneHotEncoder

Führt eine One-Hot-Kodierung kategorialer Merkmale durch. Diese unüberwachte Kodierung eignet sich besser für kategoriale Variablen mit geringer Kardinalität, da sie für jede eindeutige Kategorie ein neues Merkmal generiert.

Referenzen

Beispiele

Bei smooth="auto" wird der Glättungsparameter auf einen empirischen Bayes-Schätzer gesetzt.

>>> import numpy as np
>>> from sklearn.preprocessing import TargetEncoder
>>> X = np.array([["dog"] * 20 + ["cat"] * 30 + ["snake"] * 38], dtype=object).T
>>> y = [90.3] * 5 + [80.1] * 15 + [20.4] * 5 + [20.1] * 25 + [21.2] * 8 + [49] * 30
>>> enc_auto = TargetEncoder(smooth="auto")
>>> X_trans = enc_auto.fit_transform(X, y)
>>> # A high `smooth` parameter puts more weight on global mean on the categorical
>>> # encodings:
>>> enc_high_smooth = TargetEncoder(smooth=5000.0).fit(X, y)
>>> enc_high_smooth.target_mean_
np.float64(44.3)
>>> enc_high_smooth.encodings_
[array([44.1, 44.4, 44.3])]
>>> # On the other hand, a low `smooth` parameter puts more weight on target
>>> # conditioned on the value of the categorical:
>>> enc_low_smooth = TargetEncoder(smooth=1.0).fit(X, y)
>>> enc_low_smooth.encodings_
[array([21, 80.8, 43.2])]
fit(X, y)[Quelle]#

Passt den TargetEncoder an X und y an.

Es wird davon abgeraten, diese Methode zu verwenden, da sie zu Datenlecks führen kann. Verwenden Sie stattdessen fit_transform auf den Trainingsdaten.

Hinweis

fit(X, y).transform(X) ist nicht gleich fit_transform(X, y), da bei fit_transform ein Kreuzvalidierungs-Schema zur Kodierung verwendet wird. Details finden Sie im Benutzerhandbuch.

Parameter:
Xarray-like der Form (n_samples, n_features)

Die Daten zur Ermittlung der Kategorien jedes Merkmals.

yarray-like von Form (n_samples,)

Die Zielwerte, die zur Kodierung der Kategorien verwendet werden.

Gibt zurück:
selfobject

Angepasster Encoder.

fit_transform(X, y)[Quelle]#

Passt TargetEncoder an und transformiert X mit der Zielkodierung.

Diese Methode verwendet ein Kreuzvalidierungs-Schema, um Ziel-Lecks und Überanpassung bei nachgeschalteten Prädiktoren zu verhindern. Es ist die empfohlene Methode zur Kodierung von Trainingsdaten.

Hinweis

fit(X, y).transform(X) ist nicht gleich fit_transform(X, y), da bei fit_transform ein Kreuzvalidierungs-Schema zur Kodierung verwendet wird. Details finden Sie im Benutzerhandbuch.

Parameter:
Xarray-like der Form (n_samples, n_features)

Die Daten zur Ermittlung der Kategorien jedes Merkmals.

yarray-like von Form (n_samples,)

Die Zielwerte, die zur Kodierung der Kategorien verwendet werden.

Gibt zurück:
X_transndarray von Form (n_samples, n_features) oder (n_samples, (n_features * n_classes))

Transformierter Eingang.

get_feature_names_out(input_features=None)[Quelle]#

Holt die Ausgabemerkmale für die Transformation.

Parameter:
input_featuresarray-like von str oder None, default=None

Nicht verwendet, hier zur API-Konsistenz durch Konvention vorhanden.

Gibt zurück:
feature_names_outndarray von str-Objekten

Transformierte Merkmalnamen. feature_names_in_ wird verwendet, es sei denn, es ist nicht definiert. In diesem Fall werden die folgenden Eingabemerkmalsnamen generiert: ["x0", "x1", ..., "x(n_features_in_ - 1)"]. Wenn type_of_target_ "multiclass" ist, haben die Namen das Format '<Merkmalname>_<Klassenname>'.

get_metadata_routing()[Quelle]#

Holt das Metadaten-Routing dieses Objekts.

Bitte prüfen Sie im Benutzerhandbuch, wie der Routing-Mechanismus funktioniert.

Gibt zurück:
routingMetadataRequest

Ein MetadataRequest, der Routing-Informationen kapselt.

get_params(deep=True)[Quelle]#

Holt Parameter für diesen Schätzer.

Parameter:
deepbool, default=True

Wenn True, werden die Parameter für diesen Schätzer und die enthaltenen Unterobjekte, die Schätzer sind, zurückgegeben.

Gibt zurück:
paramsdict

Parameternamen, zugeordnet ihren Werten.

set_output(*, transform=None)[Quelle]#

Ausgabecontainer festlegen.

Siehe Einführung in die set_output API für ein Beispiel zur Verwendung der API.

Parameter:
transform{“default”, “pandas”, “polars”}, default=None

Konfiguriert die Ausgabe von transform und fit_transform.

  • "default": Standardausgabeformat eines Transformers

  • "pandas": DataFrame-Ausgabe

  • "polars": Polars-Ausgabe

  • None: Die Transformationskonfiguration bleibt unverändert

Hinzugefügt in Version 1.4: Die Option "polars" wurde hinzugefügt.

Gibt zurück:
selfestimator instance

Schätzer-Instanz.

set_params(**params)[Quelle]#

Setzt die Parameter dieses Schätzers.

Die Methode funktioniert sowohl bei einfachen Schätzern als auch bei verschachtelten Objekten (wie Pipeline). Letztere haben Parameter der Form <component>__<parameter>, so dass es möglich ist, jede Komponente eines verschachtelten Objekts zu aktualisieren.

Parameter:
**paramsdict

Schätzer-Parameter.

Gibt zurück:
selfestimator instance

Schätzer-Instanz.

transform(X)[Quelle]#

Transformiert X mit der Zielkodierung.

Diese Methode verwendet intern das Attribut encodings_, das während TargetEncoder.fit_transform gelernt wurde, um Testdaten zu transformieren.

Hinweis

fit(X, y).transform(X) ist nicht gleich fit_transform(X, y), da bei fit_transform ein Kreuzvalidierungs-Schema zur Kodierung verwendet wird. Details finden Sie im Benutzerhandbuch.

Parameter:
Xarray-like der Form (n_samples, n_features)

Die Daten zur Ermittlung der Kategorien jedes Merkmals.

Gibt zurück:
X_transndarray von Form (n_samples, n_features) oder (n_samples, (n_features * n_classes))

Transformierter Eingang.