Spec-Zone.ru › scikit-learn

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 может быть вызываемым объектом или строкой для форматирования.

Атрибуты:
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 (размерностей выходных данных) для всех преобразователей. Если хотя бы один результат является разреженной матрицей, все данные будут преобразованы в разреженные матрицы.

Примеры из галереи

Создание признаков, связанных со временем

ColumnTransformer с разнородными источниками данных

ColumnTransformer для данных разных типов

Графики частичной зависимости и индивидуальных условных ожиданий

Важность перестановок и важность признаков в случайном лесу (MDI)

Регрессия Пуассона и ненормальная функция потерь

Регрессия Твиди для страховых требований

Оценка алгоритмов обнаружения выбросов

Отображение конвейеров

Знакомство с API set_output

Сравнение TargetEncoder с другими кодировщиками

Основные нововведения scikit-learn 1.0

Основные нововведения scikit-learn 1.1

Основные нововведения scikit-learn 1.2

Основные нововведения scikit-learn 1.4

Основные нововведения scikit-learn 1.5

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API