ColumnTransformer#
- class sklearn.compose.ColumnTransformer(transformers, *, remainder='drop', sparse_threshold=0.3, n_jobs=None, transformer_weights=None, verbose=False, verbose_feature_names_out=True, force_int_remainder_cols='deprecated')[source]#
Wendet Transformer auf Spalten eines Arrays oder einer Pandas DataFrame an.
Dieser Schätzer erlaubt es, verschiedene Spalten oder Spaltenteilmengen der Eingabe separat zu transformieren, und die von jedem Transformer erzeugten Merkmale werden verkettet, um einen einzigen Merkmalsraum zu bilden. Dies ist nützlich für heterogene oder spaltenbasierte Daten, um mehrere Merkmalsextraktionsmechanismen oder Transformationen in einem einzigen Transformer zu kombinieren.
Lesen Sie mehr im Benutzerhandbuch.
Hinzugefügt in Version 0.20.
- Parameter:
- transformersListe von Tupeln
Liste von Tupeln (Name, Transformer, Spalten), die die anzuwendenden Transformer-Objekte für Teildatenmengen spezifizieren.
- namestr
Wie in Pipeline und FeatureUnion ermöglicht dies, den Transformer und seine Parameter mithilfe von
set_paramszu setzen und in der Grid-Suche zu durchsuchen.- transformer{‘drop’, ‘passthrough’} oder Schätzer
Schätzer muss fit und transform unterstützen. Spezielle Zeichenketten 'drop' und 'passthrough' werden ebenfalls akzeptiert, um anzuzeigen, dass die Spalten gelöscht werden sollen, bzw. unverändert durchgelassen werden sollen.
- columnsstr, array-like von str, int, array-like von int, array-like von bool, slice oder callable
Indiziert die Daten auf ihrer zweiten Achse. Ganzzahlen werden als Positionsspalten interpretiert, während Zeichenketten auf DataFrame-Spalten nach Namen verweisen können. Eine skalare Zeichenkette oder Ganzzahl sollte verwendet werden, wenn
transformerX als 1D-Array (Vektor) erwartet, andernfalls wird ein 2D-Array an den Transformer übergeben. Eine aufrufbare Funktion erhält die EingabedatenXund kann alles oben Genannte zurückgeben. Um mehrere Spalten nach Name oder Datentyp auszuwählen, können Siemake_column_selectorverwenden.
- remainder{‘drop’, ‘passthrough’} oder Schätzer, default=’drop’
Standardmäßig werden nur die in
transformersangegebenen Spalten transformiert und im Ergebnis verkettet, und die nicht spezifizierten Spalten werden verworfen (Standard ist'drop'). Durch die Angabe vonremainder='passthrough'werden alle verbleibenden Spalten, die nicht intransformersangegeben wurden, aber in den anfitübergebenen Daten vorhanden sind, automatisch durchgelassen. Diese Teilmenge von Spalten wird mit der Ausgabe der Transformer verkettet. Für DataFrames werden zusätzliche Spalten, die währendfitnicht gesehen wurden, vom Ausgabeergebnis vontransformausgeschlossen. Durch Setzen vonremainderauf einen Schätzer werden die verbleibenden nicht spezifizierten Spalten denremainderSchätzer verwenden. Der Schätzer muss fit und transform unterstützen. Beachten Sie, dass die Verwendung dieser Funktion erfordert, dass die an fit und transform übergebenen DataFrame-Spalten die identische Reihenfolge haben.- sparse_thresholdfloat, default=0.3
Wenn die Ausgabe der verschiedenen Transformer spärliche Matrizen enthält, werden diese als spärliche Matrix gestapelt, wenn die Gesamtdichte niedriger als dieser Wert ist. Verwenden Sie
sparse_threshold=0, um immer dichte Matrizen zurückzugeben. Wenn die transformierte Ausgabe ausschließlich dichte Daten enthält, wird das gestapelte Ergebnis dicht sein und dieses Schlüsselwort wird ignoriert.- n_jobsint, default=None
Anzahl der parallel auszuführenden Jobs.
Nonebedeutet 1, es sei denn, es befindet sich in einemjoblib.parallel_backendKontext.-1bedeutet die Verwendung aller Prozessoren. Siehe Glossar für weitere Details.- transformer_weightsdict, default=None
Multiplikative Gewichte für Merkmale pro Transformer. Die Ausgabe des Transformers wird mit diesen Gewichten multipliziert. Schlüssel sind Transformer-Namen, Werte die Gewichte.
- verbosebool, default=False
Wenn True, wird die Zeit, die für das Anpassen jedes Transformers benötigt wird, während seiner Fertigstellung ausgegeben.
- verbose_feature_names_outbool, str oder Callable[[str, str], str], default=True
Wenn True, wird
ColumnTransformer.get_feature_names_outallen Merkmalnamen den Namen des Transformers voranstellen, der dieses Merkmal erzeugt hat. Dies entspricht dem Setzen vonverbose_feature_names_out="{transformer_name}__{feature_name}".Wenn False, wird
ColumnTransformer.get_feature_names_outkeinen Merkmalnamen voranstellen und einen Fehler ausgeben, wenn die Merkmalnamen nicht eindeutig sind.Wenn
Callable[[str, str], str], wirdColumnTransformer.get_feature_names_outalle Merkmale mit dem Namen des Transformers umbenennen. Das erste Argument des Aufrufers ist der Transformer-Name und das zweite Argument ist der Merkmal-Name. Die zurückgegebene Zeichenkette ist der neue Merkmal-Name.Wenn
str, muss es eine Zeichenkette sein, die für die Formatierung bereit ist. Die gegebene Zeichenkette wird mit zwei Feldnamen formatiert:transformer_nameundfeature_name. z.B."{feature_name}__{transformer_name}". Siehestr.formatMethode aus der Standardbibliothek für weitere Informationen.
Hinzugefügt in Version 1.0.
Geändert in Version 1.6:
verbose_feature_names_outkann ein Aufrufer oder eine zu formatierende Zeichenkette sein.- force_int_remainder_colsbool, default=False
Dieser Parameter hat keine Auswirkung.
Hinweis
Wenn Sie die Liste der Spalten für die verbleibenden Spalten im angepassten Attribut
transformers_nicht abrufen, müssen Sie diesen Parameter nicht setzen.Hinzugefügt in Version 1.5.
Geändert in Version 1.7: Der Standardwert für
force_int_remainder_colswird vonTrueaufFalsein Version 1.7 geändert.Veraltet seit Version 1.7:
force_int_remainder_colsist veraltet und wird in Version 1.9 entfernt.
- Attribute:
- transformers_list
Die Sammlung der angepassten Transformer als Tupel (Name, angepasster_Transformer, Spalte).
angefertigter_Transformerkann ein Schätzer sein, oder'drop';'passthrough'wird durch ein äquivalentesFunctionTransformerersetzt. Falls keine Spalten ausgewählt wurden, ist dies der nicht angepasste Transformer. Wenn es verbleibende Spalten gibt, ist das letzte Element ein Tupel der Form: ('remainder', transformer, remaining_columns), das dem Parameterremainderentspricht. Wenn es verbleibende Spalten gibt, dannlen(transformers_)==len(transformers)+1, andernfallslen(transformers_)==len(transformers).Hinzugefügt in Version 1.7: Das Format der verbleibenden Spalten versucht nun, dem der anderen Transformer zu entsprechen: Wenn alle Spalten als Spaltennamen (
str) angegeben wurden, werden die verbleibenden Spalten als Spaltennamen gespeichert; wenn alle Spalten als Masken-Arrays (bool) angegeben wurden, dann auch die verbleibenden Spalten; in allen anderen Fällen werden die verbleibenden Spalten als Indizes (int) gespeichert.named_transformers_BunchGreift auf den angepassten Transformer über den Namen zu.
- sparse_output_bool
Boolesches Flag, das angibt, ob die Ausgabe von
transformeine spärliche Matrix oder ein dichtes Numpy-Array ist, was von der Ausgabe der einzelnen Transformer und dem Schlüsselwortsparse_thresholdabhängt.- output_indices_dict
Ein Dictionary von jedem Transformer-Namen zu einem Slice, wobei der Slice den Indizes in der transformierten Ausgabe entspricht. Dies ist nützlich, um zu überprüfen, welcher Transformer für welche transformierten Merkmale verantwortlich ist.
Hinzugefügt in Version 1.0.
- n_features_in_int
Anzahl der während fit gesehenen Merkmale. Nur definiert, wenn die zugrunde liegenden Transformer ein solches Attribut nach dem Anpassen freigeben.
Hinzugefügt in Version 0.24.
- 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.
Siehe auch
make_column_transformerBequemlichkeitsfunktion zur Kombination der Ausgaben mehrerer Transformer-Objekte, die auf Spaltenteilmengen des ursprünglichen Merkmalsraums angewendet werden.
make_column_selectorBequemlichkeitsfunktion zur Auswahl von Spalten basierend auf dem Datentyp oder dem Spaltennamen mit einem Regex-Muster.
Anmerkungen
Die Reihenfolge der Spalten in der transformierten Merkmalsmatrix folgt der Reihenfolge, in der die Spalten in der Liste
transformersangegeben sind. Spalten der ursprünglichen Merkmalsmatrix, die nicht spezifiziert sind, werden aus der resultierenden transformierten Merkmalsmatrix gelöscht, es sei denn, sie sind im Schlüsselwortpassthroughangegeben. Diese mitpassthroughspezifizierten Spalten werden am Ende der Ausgabe der Transformer angefügt.Beispiele
>>> import numpy as np >>> from sklearn.compose import ColumnTransformer >>> from sklearn.preprocessing import Normalizer >>> ct = ColumnTransformer( ... [("norm1", Normalizer(norm='l1'), [0, 1]), ... ("norm2", Normalizer(norm='l1'), slice(2, 4))]) >>> X = np.array([[0., 1., 2., 2.], ... [1., 1., 0., 1.]]) >>> # Normalizer scales each row of X to unit norm. A separate scaling >>> # is applied for the two first and two last elements of each >>> # row independently. >>> ct.fit_transform(X) array([[0. , 1. , 0.5, 0.5], [0.5, 0.5, 0. , 1. ]])
ColumnTransformerkann mit einem Transformer konfiguriert werden, der ein 1D-Array benötigt, indem die Spalte auf eine Zeichenkette gesetzt wird>>> from sklearn.feature_extraction.text import CountVectorizer >>> from sklearn.preprocessing import MinMaxScaler >>> import pandas as pd >>> X = pd.DataFrame({ ... "documents": ["First item", "second one here", "Is this the last?"], ... "width": [3, 4, 5], ... }) >>> # "documents" is a string which configures ColumnTransformer to >>> # pass the documents column as a 1d array to the CountVectorizer >>> ct = ColumnTransformer( ... [("text_preprocess", CountVectorizer(), "documents"), ... ("num_preprocess", MinMaxScaler(), ["width"])]) >>> X_trans = ct.fit_transform(X)
Für ein detaillierteres Anwendungsbeispiel siehe Column Transformer mit gemischten Typen.
- fit(X, y=None, **params)[source]#
Passt alle Transformer mithilfe von X an.
- Parameter:
- X{array-like, dataframe} mit Form (n_samples, n_features)
Eingabedaten, von denen spezifizierte Teilmengen zur Anpassung der Transformer verwendet werden.
- yarray-like mit Form (n_samples,…), default=None
Ziele für überwachtes Lernen.
- **paramsdict, default=None
Parameter, die an die
fitundtransformMethoden der zugrunde liegenden Transformer übergeben werden.Sie können dies nur übergeben, wenn Metadaten-Routing aktiviert ist, was Sie mit
sklearn.set_config(enable_metadata_routing=True)aktivieren können.Hinzugefügt in Version 1.4.
- Gibt zurück:
- selfColumnTransformer
Dieser Schätzer.
- fit_transform(X, y=None, **params)[source]#
Passt alle Transformer an, transformiert die Daten und verkettet die Ergebnisse.
- Parameter:
- X{array-like, dataframe} mit Form (n_samples, n_features)
Eingabedaten, von denen spezifizierte Teilmengen zur Anpassung der Transformer verwendet werden.
- yarray-like mit Form (n_samples,), default=None
Ziele für überwachtes Lernen.
- **paramsdict, default=None
Parameter, die an die
fitundtransformMethoden der zugrunde liegenden Transformer übergeben werden.Sie können dies nur übergeben, wenn Metadaten-Routing aktiviert ist, was Sie mit
sklearn.set_config(enable_metadata_routing=True)aktivieren können.Hinzugefügt in Version 1.4.
- Gibt zurück:
- X_t{array-like, sparse matrix} mit Form (n_samples, sum_n_components)
Horizontal gestapelte Ergebnisse der Transformer. sum_n_components ist die Summe von n_components (Ausgabedimension) über die Transformer. Wenn ein Ergebnis eine spärliche Matrix ist, wird alles in spärliche Matrizen konvertiert.
- get_feature_names_out(input_features=None)[source]#
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
Transformierte Merkmalnamen.
- get_metadata_routing()[source]#
Holt das Metadaten-Routing dieses Objekts.
Bitte prüfen Sie im Benutzerhandbuch, wie der Routing-Mechanismus funktioniert.
Hinzugefügt in Version 1.4.
- Gibt zurück:
- routingMetadataRouter
Ein
MetadataRouter, der die Routing-Informationen kapselt.
- get_params(deep=True)[source]#
Holt Parameter für diesen Schätzer.
Gibt die im Konstruktor übergebenen Parameter sowie die im
transformersdesColumnTransformerenthaltenen Schätzer zurück.- 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)[source]#
Setzt den Ausgabebereich, wenn
"transform"und"fit_transform"aufgerufen werden.Das Aufrufen von
set_outputsetzt die Ausgabe aller Schätzer intransformersundtransformers_.- 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(**kwargs)[source]#
Setzt die Parameter dieses Schätzers.
Gültige Parameter-Schlüssel können mit
get_params()aufgelistet werden. Beachten Sie, dass Sie die Parameter der intransformersdesColumnTransformerenthaltenen Schätzer direkt setzen können.- Parameter:
- **kwargsdict
Schätzer-Parameter.
- Gibt zurück:
- selfColumnTransformer
Dieser Schätzer.
- transform(X, **params)[source]#
Transformiert X separat durch jeden Transformer, verkettet die Ergebnisse.
- Parameter:
- X{array-like, dataframe} mit Form (n_samples, n_features)
Die zu transformierenden Daten nach Teilmenge.
- **paramsdict, default=None
Parameter, die an die
transformMethoden der zugrunde liegenden Transformer übergeben werden.Sie können dies nur übergeben, wenn Metadaten-Routing aktiviert ist, was Sie mit
sklearn.set_config(enable_metadata_routing=True)aktivieren können.Hinzugefügt in Version 1.4.
- Gibt zurück:
- X_t{array-like, sparse matrix} mit Form (n_samples, sum_n_components)
Horizontal gestapelte Ergebnisse der Transformer. sum_n_components ist die Summe von n_components (Ausgabedimension) über die Transformer. Wenn ein Ergebnis eine spärliche Matrix ist, wird alles in spärliche Matrizen konvertiert.
Galeriebeispiele#
Partial Dependence und Individual Conditional Expectation Plots
Permutations-Wichtigkeit vs. Random Forest Merkmals-Wichtigkeit (MDI)
Poisson-Regression und nicht-normale Verlustfunktion