OrdinalEncoder#
- class sklearn.preprocessing.OrdinalEncoder(*, categories='auto', dtype=<class 'numpy.float64'>, handle_unknown='error', unknown_value=None, encoded_missing_value=nan, min_frequency=None, max_categories=None)[Quelle]#
Kodiert kategoriale Merkmale als eine Ganzzahlmatrix.
Die Eingabe für diesen Transformer sollte ein Array-ähnliches Objekt aus ganzen Zahlen oder Zeichenketten sein, das die Werte kennzeichnet, die von kategorialen (diskreten) Merkmalen angenommen werden. Die Merkmale werden in ordinale Ganzzahlen umgewandelt. Dies führt zu einer einzelnen Spalte von Ganzzahlen (0 bis n_Kategorien - 1) pro Merkmal.
Lesen Sie mehr im Benutzerhandbuch. Ein Vergleich verschiedener Encoder finden Sie unter: Vergleich des Target Encoders mit anderen Encodern.
Hinzugefügt in Version 0.20.
- Parameter:
- categories‘auto’ oder eine Liste von Array-ähnlichen Objekten, Standard=’auto’
Kategorien (eindeutige Werte) pro Merkmal
‘auto’ : Kategorien automatisch aus den Trainingsdaten bestimmen.
list :
categories[i]enthält die erwarteten Kategorien in der i-ten Spalte. Die übergebenen Kategorien sollten keine Zeichenketten und numerische Werte mischen und sollten bei numerischen Werten sortiert sein.
Die verwendeten Kategorien finden Sie im Attribut
categories_.- dtypeZahlentyp, Standard=np.float64
Gewünschter Datentyp der Ausgabe.
- handle_unknown{‘error’, ‘use_encoded_value’}, Standard=’error’
Wenn auf ‘error’ gesetzt, wird bei Vorhandensein einer unbekannten kategorialen Merkmals während der Transformation ein Fehler ausgelöst. Wenn auf ‘use_encoded_value’ gesetzt, wird der kodierte Wert unbekannter Kategorien auf den Wert gesetzt, der für den Parameter
unknown_valueangegeben wurde. Ininverse_transformwird eine unbekannte Kategorie als None bezeichnet.Hinzugefügt in Version 0.24.
- unknown_valueint oder np.nan, Standard=None
Wenn der Parameter handle_unknown auf ‘use_encoded_value’ gesetzt ist, ist dieser Parameter erforderlich und legt den kodierten Wert unbekannter Kategorien fest. Er muss von den Werten, die zur Kodierung von Kategorien in
fitverwendet werden, verschieden sein. Wenn er auf np.nan gesetzt ist, muss der Parameterdtypeein Float-Datentyp sein.Hinzugefügt in Version 0.24.
- encoded_missing_valueint oder np.nan, Standard=np.nan
Kodierter Wert für fehlende Kategorien. Wenn auf
np.nangesetzt, muss der Parameterdtypeein Float-Datentyp sein.Hinzugefügt in Version 1.1.
- min_frequencyint oder float, Standard=None
Gibt die minimale Häufigkeit an, unterhalb der eine Kategorie als selten gilt.
Wenn
int, werden Kategorien mit geringerer Kardinalität als selten betrachtet.Wenn
float, werden Kategorien mit geringerer Kardinalität alsmin_frequency * n_samplesals selten betrachtet.
Hinzugefügt in Version 1.3: Lesen Sie mehr im Benutzerhandbuch.
- max_categoriesint, Standard=None
Gibt eine Obergrenze für die Anzahl der Ausgabekategorien für jedes Eingabemerkmal bei Berücksichtigung von seltenen Kategorien an. Wenn es seltene Kategorien gibt, enthält
max_categoriesdie Kategorie, die seltene Kategorien repräsentiert, zusammen mit den häufigen Kategorien. WennNone, gibt es keine Begrenzung für die Anzahl der Ausgabemerkmale.max_categoriesberücksichtigt **keine** fehlenden oder unbekannten Kategorien. Das Setzen vonunknown_valueoderencoded_missing_valueauf eine Ganzzahl erhöht die Anzahl der eindeutigen Ganzzahlcodes um jeweils eins. Dies kann zu bis zumax_categories + 2Ganzzahlcodes führen.Hinzugefügt in Version 1.3: Lesen Sie mehr im Benutzerhandbuch.
- Attribute:
- categories_Liste von Arrays
Die Kategorien jedes Merkmals, die während
fitbestimmt wurden (in der Reihenfolge der Merkmale in X und entsprechend der Ausgabe vontransform). Dies schließt keine Kategorien ein, die währendfitnicht gesehen wurden.- n_features_in_int
Anzahl der während des fits gesehenen Merkmale.
Hinzugefügt in Version 1.0.
- 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.Hinzugefügt in Version 1.0.
infrequent_categories_Liste von ndarraySeltene Kategorien für jedes Merkmal.
Siehe auch
OneHotEncoderFührt eine One-Hot-Kodierung von kategorialen Merkmalen durch. Diese Kodierung ist für kategoriale Variablen mit geringer bis mittlerer Kardinalität geeignet, sowohl in überwachten als auch in unüberwachten Einstellungen.
TargetEncoderKodiert kategoriale Merkmale unter Verwendung des überwachten Signals in einer Klassifikations- oder Regressionspipeline. Diese Kodierung ist typischerweise für kategoriale Variablen mit hoher Kardinalität geeignet.
LabelEncoderKodiert Ziel-Labels mit Werten zwischen 0 und
n_classes-1.
Beispiele
Gegeben sei ein Datensatz mit zwei Merkmalen. Wir lassen den Encoder die eindeutigen Werte pro Merkmal ermitteln und die Daten in eine ordinale Kodierung umwandeln.
>>> from sklearn.preprocessing import OrdinalEncoder >>> enc = OrdinalEncoder() >>> X = [['Male', 1], ['Female', 3], ['Female', 2]] >>> enc.fit(X) OrdinalEncoder() >>> enc.categories_ [array(['Female', 'Male'], dtype=object), array([1, 2, 3], dtype=object)] >>> enc.transform([['Female', 3], ['Male', 1]]) array([[0., 2.], [1., 0.]])
>>> enc.inverse_transform([[1, 0], [0, 1]]) array([['Male', 1], ['Female', 2]], dtype=object)
Standardmäßig ist
OrdinalEncoderbei fehlenden Werten nachsichtig, indem er sie weitergibt.>>> import numpy as np >>> X = [['Male', 1], ['Female', 3], ['Female', np.nan]] >>> enc.fit_transform(X) array([[ 1., 0.], [ 0., 1.], [ 0., nan]])
Sie können den Parameter
encoded_missing_valueverwenden, um fehlende Werte zu kodieren.>>> enc.set_params(encoded_missing_value=-1).fit_transform(X) array([[ 1., 0.], [ 0., 1.], [ 0., -1.]])
Seltene Kategorien werden durch Setzen von
max_categoriesodermin_frequencyaktiviert. Im folgenden Beispiel werden "a" und "d" als selten betrachtet und zu einer einzigen Kategorie zusammengefasst, "b" und "c" sind eigene Kategorien, unbekannte Werte werden als 3 und fehlende Werte als 4 kodiert.>>> X_train = np.array( ... [["a"] * 5 + ["b"] * 20 + ["c"] * 10 + ["d"] * 3 + [np.nan]], ... dtype=object).T >>> enc = OrdinalEncoder( ... handle_unknown="use_encoded_value", unknown_value=3, ... max_categories=3, encoded_missing_value=4) >>> _ = enc.fit(X_train) >>> X_test = np.array([["a"], ["b"], ["c"], ["d"], ["e"], [np.nan]], dtype=object) >>> enc.transform(X_test) array([[2.], [0.], [1.], [2.], [3.], [4.]])
- fit(X, y=None)[Quelle]#
Passt den OrdinalEncoder an X an.
- Parameter:
- Xarray-like der Form (n_samples, n_features)
Die Daten zur Ermittlung der Kategorien jedes Merkmals.
- yNone
Ignoriert. Dieser Parameter existiert nur zur Kompatibilität mit
Pipeline.
- Gibt zurück:
- selfobject
Angepasster Encoder.
- fit_transform(X, y=None, **fit_params)[Quelle]#
An Daten anpassen, dann transformieren.
Passt den Transformer an
Xundymit optionalen Parameternfit_paramsan und gibt eine transformierte Version vonXzurück.- Parameter:
- Xarray-like der Form (n_samples, n_features)
Eingabestichproben.
- yarray-like der Form (n_samples,) oder (n_samples, n_outputs), Standardwert=None
Zielwerte (None für unüberwachte Transformationen).
- **fit_paramsdict
Zusätzliche Fit-Parameter. Nur übergeben, wenn der Estimator zusätzliche Parameter in seiner
fit-Methode akzeptiert.
- Gibt zurück:
- X_newndarray array der Form (n_samples, n_features_new)
Transformiertes Array.
- 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
Eingabemerkmale.
Wenn
input_featuresNoneist, werdenfeature_names_in_als Merkmalnamen verwendet. Wennfeature_names_in_nicht definiert ist, werden die folgenden Eingabemerkmalsnamen generiert:["x0", "x1", ..., "x(n_features_in_ - 1)"].Wenn
input_featuresein Array-ähnliches Objekt ist, mussinput_featuresmitfeature_names_in_übereinstimmen, wennfeature_names_in_definiert ist.
- Gibt zurück:
- feature_names_outndarray von str-Objekten
Gleich wie Eingabemerkmale.
- 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.
- inverse_transform(X)[Quelle]#
Wandelt die Daten in die ursprüngliche Darstellung zurück.
- Parameter:
- XArray-ähnliches Objekt der Form (n_samples, n_encoded_features)
Die transformierten Daten.
- Gibt zurück:
- X_originalndarray von der Form (n_samples, n_features)
Umgekehrt transformiertes Array.
- 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.
Galeriebeispiele#
Unterstützung für kategorische Merkmale in Gradient Boosting
Partial Dependence und Individual Conditional Expectation Plots
Permutations-Wichtigkeit vs. Random Forest Merkmals-Wichtigkeit (MDI)
Poisson-Regression und nicht-normale Verlustfunktion