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
LabelBinarizerbinarisiert, dann werden der durchschnittliche Zielwert für jede Klasse und jede Kategorie für die Kodierung verwendet, was zun_features*n_classeskodierten Ausgabemerkmalen führt.TargetEncoderberücksichtigt fehlende Werte wienp.nanoderNoneals eine weitere Kategorie und kodiert sie wie jede andere Kategorie. Kategorien, die währendfitnicht gesehen werden, werden mit dem Zielmittelwert kodiert, d.h.target_mean_.Eine Demo zur Bedeutung der internen Kreuzvalidierung von
TargetEncoderfinden 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 gleichfit_transform(X, y), da beifit_transformein 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 mittype_of_targetabgeleitet."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, leitettype_of_targetdas Ziel als"multiclass"ab. In diesem Fall gibt die Einstellung vontarget_type="continuous"das Ziel als Regressionsproblem an. Das Attributtarget_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", wirdsmoothauf einen empirischen Bayes-Schätzer gesetzt.- cvint, Standard=5
Bestimmt die Anzahl der Folds in der Kreuzvalidierungs-Strategie, die in
fit_transformverwendet wird. Für Klassifizierungsziele wirdStratifiedKFoldverwendet, und für kontinuierliche Ziele wirdKFoldverwendet.- shufflebool, Standard=True
Ob die Daten in
fit_transformvor 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
shuffleTrue ist, beeinflusstrandom_statedie 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
Xgelernt wurden. Für Merkmalisindencodings_[i]die Kodierungen, die den incategories_[i]aufgeführten Kategorien entsprechen. Wenntarget_type_"multiclass" ist, wird die Kodierung für Merkmaliund Klassejinencodings_[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
categoriesangegeben wurden (in der Reihenfolge der Merkmale inXund entsprechend der Ausgabe vontransform).- target_type_str
Typ des Ziels.
- target_mean_float
Der Gesamtdurchschnitt des Ziels. Dieser Wert wird nur in
transformverwendet, 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
XMerkmalnamen 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, andernfallsNone.
Siehe auch
OrdinalEncoderFü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.
OneHotEncoderFü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
TargetEncoderan X und y an.Es wird davon abgeraten, diese Methode zu verwenden, da sie zu Datenlecks führen kann. Verwenden Sie stattdessen
fit_transformauf den Trainingsdaten.Hinweis
fit(X, y).transform(X)ist nicht gleichfit_transform(X, y), da beifit_transformein 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
TargetEncoderan und transformiertXmit 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 gleichfit_transform(X, y), da beifit_transformein 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)"]. Wenntype_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
transformundfit_transform."default": Standardausgabeformat eines Transformers"pandas": DataFrame-Ausgabe"polars": Polars-AusgabeNone: 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ährendTargetEncoder.fit_transformgelernt wurde, um Testdaten zu transformieren.Hinweis
fit(X, y).transform(X)ist nicht gleichfit_transform(X, y), da beifit_transformein 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.
Galeriebeispiele#
Unterstützung für kategorische Merkmale in Gradient Boosting