ColumnTransformer
- classsklearn.compose.ColumnTransformer(transformers, *, remainder='drop', sparse_threshold=0.3, n_jobs=None, transformer_weights=None, verbose=False, verbose_feature_names_out=True)[исходный код]
-
Применяет преобразователи к столбцам массива или pandas DataFrame.
Этот оценщик позволяет отдельно преобразовывать разные столбцы или подмножества столбцов входных данных, а признаки, созданные каждым преобразователем, объединяются в единое пространство признаков. Это полезно для гетерогенных или табличных данных, когда требуется объединить несколько механизмов извлечения признаков или преобразований в один преобразователь.
Подробнее см. в Руководстве пользователя.
Добавлено в версии 0.20.
- Параметры:
-
- transformersсписок кортежей
-
Список кортежей (name, transformer, columns), задающих объекты преобразователей, которые будут применяться к подмножествам данных.
- namestr
-
Как и в Pipeline и FeatureUnion, это позволяет задавать преобразователь и его параметры с помощью
set_paramsи выполнять поиск при поиске по сетке. - transformer{‘drop’, ‘passthrough’} или оценщик
-
Оценщик должен поддерживать fit и transform. Также принимаются специальные строки ‘drop’ и ‘passthrough’, указывающие соответственно на необходимость удалить столбцы или передать их без преобразования.
- columnsstr, массивоподобный объект из str, int, массивоподобный объект из int, массивоподобный объект из bool, срез или вызываемый объект
-
Индексирует данные по второй оси. Целые числа интерпретируются как позиционные индексы столбцов, а строки могут ссылаться на столбцы DataFrame по имени. Если
transformerожидает X в виде одномерного массивоподобного объекта (вектора), следует использовать скалярную строку или целое число; в противном случае преобразователю будет передан двумерный массив. Вызываемому объекту передаются входные данныеX, и он может вернуть любое из перечисленного выше. Чтобы выбрать несколько столбцов по имени или типу данных, можно использоватьmake_column_selector.
- remainder{‘drop’, ‘passthrough’} или оценщик, по умолчанию=’drop’
-
По умолчанию преобразуются и объединяются в выходных данных только столбцы, указанные в
transformers, а неуказанные столбцы удаляются (значение по умолчанию для'drop'). Если указатьremainder='passthrough', все остальные столбцы, не указанные вtransformers, но присутствующие в данных, переданных вfit, будут переданы без изменений. Это подмножество столбцов объединяется с выходными данными преобразователей. Для фреймов данных дополнительные столбцы, не встречавшиеся во времяfit, не будут включены в выходные данныеtransform. Если в качествеremainderзадан оценщик, для оставшихся неуказанных столбцов будет использоваться оценщикremainder. Оценщик должен поддерживать fit и transform. Обратите внимание, что при использовании этой возможности порядок столбцов DataFrame, передаваемых в fit и transform, должен совпадать. - sparse_thresholdfloat, по умолчанию=0.3
-
Если выходные данные разных преобразователей содержат разреженные матрицы, они будут объединены в разреженную матрицу, если общая плотность ниже этого значения. Используйте
sparse_threshold=0, чтобы всегда возвращать плотный массив. Если преобразованные выходные данные содержат только плотные данные, итоговый результат будет плотным, и этот параметр будет проигнорирован. - n_jobsint, по умолчанию=None
-
Количество задач, выполняемых параллельно.
Noneозначает 1, если только не используется контекстjoblib.parallel_backend.-1означает использование всех процессоров. Подробнее см. в глоссарии. - transformer_weightsdict, по умолчанию=None
-
Множители для признаков каждого преобразователя. Выходные данные преобразователя умножаются на эти веса. Ключи — имена преобразователей, значения — веса.
- verbosebool, по умолчанию=False
-
Если True, по завершении обучения каждого преобразователя будет выводиться затраченное время.
- verbose_feature_names_outbool, str или Callable[[str, str], str], по умолчанию=True
-
- Если True,
ColumnTransformer.get_feature_names_outбудет добавлять к именам всех признаков имя преобразователя, создавшего этот признак. Это эквивалентно заданиюverbose_feature_names_out="{transformer_name}__{feature_name}". - Если False,
ColumnTransformer.get_feature_names_outне будет добавлять префиксы к именам признаков и вызовет ошибку, если имена признаков не уникальны. - Если задано
Callable[[str, str], str],ColumnTransformer.get_feature_names_outпереименует все признаки, используя имя преобразователя. Первый аргумент вызываемого объекта — имя преобразователя, второй — имя признака. Возвращённая строка станет новым именем признака. - Если задано
str, это должна быть строка, готовая к форматированию. Данная строка будет отформатирована с использованием двух имён полей:transformer_nameиfeature_name. Например,"{feature_name}__{transformer_name}". Подробнее см. описание методаstr.formatиз стандартной библиотеки.
Добавлено в версии 1.0.
Изменено в версии 1.6:
verbose_feature_names_outможет быть вызываемым объектом или строкой для форматирования. - Если True,
- Атрибуты:
-
- transformers_list
-
Коллекция обученных преобразователей в виде кортежей (name, fitted_transformer, column).
fitted_transformerможет быть оценщиком или'drop';'passthrough'заменяется эквивалентным объектомFunctionTransformer. Если столбцы не были выбраны, здесь будет находиться необученный преобразователь. Если остались столбцы, последним элементом будет кортеж вида: (‘remainder’, transformer, remaining_columns), соответствующий параметруremainder. Если остались столбцы, тоlen(transformers_)==len(transformers)+1, иначеlen(transformers_)==len(transformers).Добавлено в версии 1.7: Формат оставшихся столбцов теперь по возможности соответствует формату других преобразователей: если все столбцы были заданы как имена (
str), оставшиеся столбцы сохраняются как имена; если все столбцы были заданы как массивы масок (bool), оставшиеся столбцы также сохраняются как массивы масок; во всех остальных случаях оставшиеся столбцы сохраняются как индексы (int). -
named_transformers_Bunch -
Доступ к обученному преобразователю по имени.
- sparse_output_bool
-
Логический флаг, показывающий, являются ли выходные данные
transformразреженной матрицей или плотным массивом numpy; это зависит от выходных данных отдельных преобразователей и параметраsparse_threshold. - output_indices_dict
-
Словарь, сопоставляющий имя каждого преобразователя с диапазоном индексов в преобразованных выходных данных. Это полезно для определения того, какой преобразователь отвечает за преобразование конкретных признаков.
Добавлено в версии 1.0.
- n_features_in_int
-
Количество признаков, обнаруженных во время fit. Определён только в том случае, если у базовых преобразователей есть такой атрибут после обучения.
Добавлено в версии 0.24.
-
feature_names_in_ndarray формы (
n_features_in_,) -
Имена признаков, обнаруженных во время fit. Определяется только в том случае, если
Xсодержит имена признаков, представленные строками.Добавлено в версии 1.0.
См. также
make_column_transformer-
Вспомогательная функция для объединения результатов нескольких объектов-преобразователей, применённых к подмножествам столбцов исходного пространства признаков.
make_column_selector-
Вспомогательная функция для выбора столбцов по типу данных или имени с использованием регулярного выражения.
Примечания
Порядок столбцов в преобразованной матрице признаков соответствует порядку их указания в списке
transformers. Столбцы исходной матрицы признаков, которые не указаны, удаляются из результирующей преобразованной матрицы, если только они не указаны в параметреpassthrough. Столбцы, указанные с помощьюpassthrough, добавляются справа от выходных данных преобразователей.Примеры
>>> 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можно настроить с преобразователем, которому требуется одномерный массив: для этого укажите столбец в виде строки:>>> 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)Более подробный пример использования см. в разделе Column Transformer с разнородными типами данных.
- fit(X, y=None, **params)[исходный код]
-
Обучает все преобразователи с использованием X.
- Параметры:
-
- X{массивоподобный объект, dataframe} формы (n_samples, n_features)
-
Входные данные; указанные подмножества используются для обучения преобразователей.
- yмассивоподобный объект формы (n_samples,…), по умолчанию=None
-
Целевые значения для обучения с учителем.
- **paramsdict, по умолчанию=None
-
Параметры, передаваемые методам
fitиtransformбазовых преобразователей.Передать их можно только при включённой маршрутизации метаданных; включить её можно с помощью
sklearn.set_config(enable_metadata_routing=True).Добавлено в версии 1.4.
- Возвращает:
-
- selfColumnTransformer
-
Этот оценщик.
- fit_transform(X, y=None, **params)[исходный код]
-
Обучает все преобразователи, преобразует данные и объединяет результаты.
- Параметры:
-
- X{массивоподобный объект, dataframe} формы (n_samples, n_features)
-
Входные данные; указанные подмножества используются для обучения преобразователей.
- yмассивоподобный объект формы (n_samples,), по умолчанию=None
-
Целевые значения для обучения с учителем.
- **paramsdict, по умолчанию=None
-
Параметры, передаваемые методам
fitиtransformбазовых преобразователей.Передать их можно только при включённой маршрутизации метаданных; включить её можно с помощью
sklearn.set_config(enable_metadata_routing=True).Добавлено в версии 1.4.
- Возвращает:
-
- X_t{массивоподобный объект, разреженная матрица} формы (n_samples, sum_n_components)
-
Результаты преобразователей, объединённые по горизонтали. sum_n_components — сумма n_components (размерностей выходных данных) для всех преобразователей. Если хотя бы один результат является разреженной матрицей, все данные будут преобразованы в разреженные матрицы.
- get_feature_names_out(input_features=None)[исходный код]
-
Возвращает имена выходных признаков после преобразования.
- Параметры:
-
- input_featuresмассивоподобный объект из str или None, по умолчанию=None
-
Входные признаки.
- Если
input_featuresимеет значениеNone, в качестве имён признаков используютсяfeature_names_in_. Еслиfeature_names_in_не определён, генерируются следующие имена входных признаков:["x0", "x1", ..., "x(n_features_in_ - 1)"]. - Если
input_featuresявляется массивоподобным объектом, тоinput_featuresдолжен соответствоватьfeature_names_in_, если определёнfeature_names_in_.
- Если
- Возвращает:
-
- feature_names_outndarray из строковых объектов
-
Имена преобразованных признаков.
- get_metadata_routing()[исходный код]
-
Возвращает маршрутизацию метаданных этого объекта.
Описание работы механизма маршрутизации см. в Руководстве пользователя.
Добавлено в версии 1.4.
- Возвращает:
-
- routingMetadataRouter
-
Объект
MetadataRouter, содержащий информацию о маршрутизации.
- get_params(deep=True)[исходный код]
-
Возвращает параметры этого оценщика.
Возвращает параметры, переданные конструктору, а также оценщики, содержащиеся в
transformersобъектаColumnTransformer.- Параметры:
-
- deepbool, по умолчанию=True
-
Если True, возвращает параметры этого оценщика и содержащихся в нём подобъектов, являющихся оценщиками.
- Возвращает:
-
- paramsdict
-
Имена параметров, сопоставленные с их значениями.
- set_output(*, transform=None)[исходный код]
-
Задаёт контейнер выходных данных при вызове
"transform"и"fit_transform".Вызов
set_outputзадаёт формат выходных данных для всех оценщиков вtransformersиtransformers_.- Параметры:
-
- transform{“default”, “pandas”, “polars”}, по умолчанию=None
-
Настраивает формат выходных данных
transformиfit_transform.-
"default": формат выходных данных преобразователя по умолчанию -
"pandas": выходные данные DataFrame -
"polars": выходные данные Polars -
None: конфигурация преобразования остаётся без изменений
Добавлено в версии 1.4: Добавлен параметр
"polars". -
- Возвращает:
-
- selfэкземпляр оценщика
-
Экземпляр оценщика.
- set_params(**kwargs)[исходный код]
-
Задаёт параметры этого оценщика.
Допустимые ключи параметров можно получить с помощью
get_params(). Обратите внимание, что можно напрямую задавать параметры оценщиков, содержащихся вtransformersобъектаColumnTransformer.- Параметры:
-
- **kwargsdict
-
Параметры оценщика.
- Возвращает:
-
- selfColumnTransformer
-
Этот оценщик.
- transform(X, **params)[исходный код]
-
Преобразует X отдельно каждым преобразователем и объединяет результаты.
- Параметры:
-
- X{массивоподобный объект, dataframe} формы (n_samples, n_features)
-
Данные, преобразуемые каждым подмножеством.
- **paramsdict, по умолчанию=None
-
Параметры, передаваемые методу
transformбазовых преобразователей.Передать их можно только при включённой маршрутизации метаданных; включить её можно с помощью
sklearn.set_config(enable_metadata_routing=True).Добавлено в версии 1.4.
- Возвращает:
-
- X_t{массивоподобный объект, разреженная матрица} формы (n_samples, sum_n_components)
-
Результаты преобразователей, объединённые по горизонтали. sum_n_components — сумма n_components (размерностей выходных данных) для всех преобразователей. Если хотя бы один результат является разреженной матрицей, все данные будут преобразованы в разреженные матрицы.
Примеры из галереи
© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.compose.ColumnTransformer.html