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_params zu 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 transformer X als 1D-Array (Vektor) erwartet, andernfalls wird ein 2D-Array an den Transformer übergeben. Eine aufrufbare Funktion erhält die Eingabedaten X und kann alles oben Genannte zurückgeben. Um mehrere Spalten nach Name oder Datentyp auszuwählen, können Sie make_column_selector verwenden.

remainder{‘drop’, ‘passthrough’} oder Schätzer, default=’drop’

Standardmäßig werden nur die in transformers angegebenen Spalten transformiert und im Ergebnis verkettet, und die nicht spezifizierten Spalten werden verworfen (Standard ist 'drop'). Durch die Angabe von remainder='passthrough' werden alle verbleibenden Spalten, die nicht in transformers angegeben wurden, aber in den an fit ü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ährend fit nicht gesehen wurden, vom Ausgabeergebnis von transform ausgeschlossen. Durch Setzen von remainder auf einen Schätzer werden die verbleibenden nicht spezifizierten Spalten den remainder Schä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. None bedeutet 1, es sei denn, es befindet sich in einem joblib.parallel_backend Kontext. -1 bedeutet 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_out allen Merkmalnamen den Namen des Transformers voranstellen, der dieses Merkmal erzeugt hat. Dies entspricht dem Setzen von verbose_feature_names_out="{transformer_name}__{feature_name}".

  • Wenn False, wird ColumnTransformer.get_feature_names_out keinen Merkmalnamen voranstellen und einen Fehler ausgeben, wenn die Merkmalnamen nicht eindeutig sind.

  • Wenn Callable[[str, str], str], wird ColumnTransformer.get_feature_names_out alle 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_name und feature_name. z.B. "{feature_name}__{transformer_name}". Siehe str.format Methode aus der Standardbibliothek für weitere Informationen.

Hinzugefügt in Version 1.0.

Geändert in Version 1.6: verbose_feature_names_out kann 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_cols wird von True auf False in Version 1.7 geändert.

Veraltet seit Version 1.7: force_int_remainder_cols ist veraltet und wird in Version 1.9 entfernt.

Attribute:
transformers_list

Die Sammlung der angepassten Transformer als Tupel (Name, angepasster_Transformer, Spalte). angefertigter_Transformer kann ein Schätzer sein, oder 'drop'; 'passthrough' wird durch ein äquivalentes FunctionTransformer ersetzt. 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 Parameter remainder entspricht. Wenn es verbleibende Spalten gibt, dann len(transformers_)==len(transformers)+1, andernfalls len(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_Bunch

Greift auf den angepassten Transformer über den Namen zu.

sparse_output_bool

Boolesches Flag, das angibt, ob die Ausgabe von transform eine spärliche Matrix oder ein dichtes Numpy-Array ist, was von der Ausgabe der einzelnen Transformer und dem Schlüsselwort sparse_threshold abhä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 X Merkmalnamen hat, die alle Zeichenketten sind.

Hinzugefügt in Version 1.0.

Siehe auch

make_column_transformer

Bequemlichkeitsfunktion zur Kombination der Ausgaben mehrerer Transformer-Objekte, die auf Spaltenteilmengen des ursprünglichen Merkmalsraums angewendet werden.

make_column_selector

Bequemlichkeitsfunktion 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 transformers angegeben 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üsselwort passthrough angegeben. Diese mit passthrough spezifizierten 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. ]])

ColumnTransformer kann 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 fit und transform Methoden 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 fit und transform Methoden 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_features None ist, werden feature_names_in_ als Merkmalnamen verwendet. Wenn feature_names_in_ nicht definiert ist, werden die folgenden Eingabemerkmalsnamen generiert: ["x0", "x1", ..., "x(n_features_in_ - 1)"].

  • Wenn input_features ein Array-ähnliches Objekt ist, muss input_features mit feature_names_in_ übereinstimmen, wenn feature_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 transformers des ColumnTransformer enthaltenen 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_output setzt die Ausgabe aller Schätzer in transformers und transformers_.

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(**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 in transformers des ColumnTransformer enthaltenen 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 transform Methoden 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.