Spec-Zone.ru › scikit-learn

TargetEncoder

classsklearn.preprocessing.TargetEncoder(categories='auto', target_type='auto', smooth='auto', cv=5, shuffle='deprecated', random_state='deprecated')[исходный код]

Кодировщик целевой переменной для задач регрессии и классификации.

Каждая категория кодируется на основе сглаженной оценки среднего значения целевой переменной для наблюдений, относящихся к этой категории. Схема кодирования объединяет общее среднее целевой переменной со средним значением целевой переменной, обусловленным значением категории (см. [MIC]).

Если тип целевой переменной — «multiclass», кодировки основаны на оценке условной вероятности для каждого класса. Сначала целевая переменная бинаризуется по схеме «один против всех» с помощью LabelBinarizer, затем среднее значение целевой переменной для каждого класса и каждой категории используется для кодирования, в результате чего получаются n_features * n_classes закодированных выходных признаков.

TargetEncoder рассматривает пропущенные значения, такие как np.nan или None, как отдельную категорию и кодирует их так же, как любые другие категории. Категории, которые не встречались во время fit, кодируются средним значением целевой переменной, то есть target_mean_.

Демонстрацию важности внутреннего кросс-фиттинга в TargetEncoder см. в разделе Внутренний кросс-фиттинг кодировщика целевой переменной. Сравнение различных кодировщиков см. в разделе Сравнение кодировщика целевой переменной с другими кодировщиками. Подробнее см. в Руководстве пользователя.

Примечание

fit(X, y).transform(X) не равно fit_transform(X, y), поскольку в fit_transform для кодирования используется схема кросс-фиттинга. Подробности см. в Руководстве пользователя.

Добавлено в версии 1.3.

Параметры:
categories«auto» или список формы (n_features,) из array-like, по умолчанию «auto»

Категории (уникальные значения) для каждого признака:

  • "auto" : автоматически определять категории по обучающим данным.
  • list : categories[i] содержит категории, ожидаемые в i-м столбце. Передаваемые категории в рамках одного признака не должны содержать одновременно строки и числовые значения; числовые значения должны быть отсортированы.

Используемые категории хранятся в атрибуте categories_.

target_type{«auto», «continuous», «binary», «multiclass»}, по умолчанию «auto»

Тип целевой переменной.

  • "auto" : тип целевой переменной определяется с помощью type_of_target.
  • "continuous" : непрерывная целевая переменная
  • "binary" : бинарная целевая переменная
  • "multiclass" : многоклассовая целевая переменная

Примечание

Тип целевой переменной, определённый с помощью "auto", может отличаться от типа, требуемого для моделирования. Например, если целевая переменная состоит из целых чисел от 0 до 100, то type_of_target определит её тип как "multiclass". В этом случае установка target_type="continuous" задаст целевую переменную как задачу регрессии. Атрибут target_type_ содержит тип целевой переменной, используемый кодировщиком.

Изменено в версии 1.4: Добавлен вариант «multiclass».

smooth«auto» или float, по умолчанию «auto»

Степень смешивания среднего значения целевой переменной, обусловленного значением категории, с общим средним значением целевой переменной. Чем больше значение smooth, тем больший вес придаётся общему среднему целевой переменной. Если "auto", то smooth устанавливается в соответствии с эмпирической байесовской оценкой.

cvint, генератор перекрёстной проверки или итерируемый объект, по умолчанию=None

Определяет стратегию разбиения, используемую при внутреннем кросс-фиттинге во время fit_transform. Разделители, в которых индекс каждого образца не появляется ровно один раз в проверочной выборке, вызывают ValueError. Возможные значения cv:

  • None, чтобы использовать внутреннюю 5-блочную перекрёстную проверку, выбираемую на основе

    target_type,

  • целое число, задающее количество блоков для внутренне выбираемой перекрёстной проверки

    на основе target_type,

  • разделитель перекрёстной проверки, который не повторяет образцы в проверочных блоках,
  • итерируемый объект, возвращающий разбиения (train, test) в виде массивов индексов.

Для целочисленных значений/None, если target_type равно "continuous", используется KFold, в противном случае используется StratifiedKFold.

Дополнительную информацию о стратегиях перекрёстной проверки см. в Руководстве пользователя.

Изменено в версии 1.9: Генераторы и итерируемые объекты перекрёстной проверки также можно передавать как cv.

shufflebool, по умолчанию=True

Нужно ли перемешивать данные в fit_transform перед разделением на блоки. Обратите внимание, что образцы внутри каждого разбиения перемешиваться не будут. Применяется только если cv — целое число или None. Если cv является генератором перекрёстной проверки или итерируемым объектом, shuffle игнорируется.

Устарело с версии 1.9: shuffle устарел и будет удалён в версии 1.11. Чтобы задать перемешивание, передавайте генератор перекрёстной проверки в качестве аргумента cv.

random_stateint, экземпляр RandomState или None, по умолчанию=None

Если shuffle равно True, random_state влияет на порядок индексов, определяющий случайность каждого блока. В противном случае этот параметр не действует. Передайте целое число, чтобы получать воспроизводимые результаты при нескольких вызовах функции. См. глоссарий.

Устарело с версии 1.9: random_state устарел и будет удалён в версии 1.11. Чтобы задать состояние генератора случайных чисел для перемешивания, передавайте генератор перекрёстной проверки в качестве аргумента cv.

Атрибуты:
encodings_список формы (n_features,) или (n_features * n_classes) из ndarray

Кодировки, изученные на всех X. Для признака i значения encodings_[i] соответствуют кодировкам категорий, перечисленных в categories_[i]. Если target_type_ имеет значение «multiclass», кодировка признака i и класса j хранится в encodings_[j + (i * len(classes_))]. Например, для 2 признаков (f) и 3 классов (c) кодировки упорядочены следующим образом: f0_c0, f0_c1, f0_c2, f1_c0, f1_c1, f1_c2,

categories_список формы (n_features,) из ndarray

Категории каждого входного признака, определённые во время обучения или заданные в categories (в порядке признаков в X и в соответствии с результатом transform).

target_type_str

Тип целевой переменной.

target_mean_float

Общее среднее целевой переменной. Это значение используется только в transform для кодирования категорий.

n_features_in_int

Количество признаков, обнаруженных во время обучения.

feature_names_in_ndarray формы (n_features_in_,)

Имена признаков, обнаруженных во время обучения. Определяется только если X имеет имена признаков, представленные строками.

classes_ndarray или None

Если target_type_ имеет значение ‘binary’ или ‘multiclass’, содержит метку каждого класса; в противном случае — None.

См. также

OrdinalEncoder

Выполняет порядковое (целочисленное) кодирование категориальных признаков. В отличие от TargetEncoder, это кодирование не является контролируемым. Поэтому использование полученной кодировки в качестве числовых признаков приводит к произвольно упорядоченным значениям и, как правило, снижает предсказательную эффективность при предварительной обработке данных для классификатора или регрессора.

OneHotEncoder

Выполняет унитарное кодирование категориальных признаков. Это неконтролируемое кодирование лучше подходит для категориальных переменных с небольшим числом уникальных значений, поскольку создаёт новый признак для каждой уникальной категории.

Список литературы

[MIC]

Micci-Barreca, Daniele. «Схема предварительной обработки категориальных признаков с высокой кардинальностью для задач классификации и прогнозирования», SIGKDD Explor. Newsl. 3, 1 (июль 2001), 27–32.

Примеры

При использовании smooth="auto" параметр сглаживания задаётся в соответствии с эмпирической байесовской оценкой:

>>> import numpy as np
>>> from sklearn.preprocessing import TargetEncoder
>>> X = np.array([["dog"] * 20 + ["cat"] * 30 + ["snake"] * 38], dtype=object).T
>>> y = [90.3] * 5 + [80.1] * 15 + [20.4] * 5 + [20.1] * 25 + [21.2] * 8 + [49] * 30
>>> enc_auto = TargetEncoder(smooth="auto")
>>> X_trans = enc_auto.fit_transform(X, y)
>>> # A high `smooth` parameter puts more weight on global mean on the categorical
>>> # encodings:
>>> enc_high_smooth = TargetEncoder(smooth=5000.0).fit(X, y)
>>> enc_high_smooth.target_mean_
np.float64(44.3)
>>> enc_high_smooth.encodings_
[array([44.1, 44.4, 44.3])]
>>> # On the other hand, a low `smooth` parameter puts more weight on target
>>> # conditioned on the value of the categorical:
>>> enc_low_smooth = TargetEncoder(smooth=1.0).fit(X, y)
>>> enc_low_smooth.encodings_
[array([21, 80.8, 43.2])]
fit(X, y)[исходный код]

Обучить TargetEncoder на X и y.

Использовать этот метод не рекомендуется, поскольку он может привести к утечке данных. Вместо этого используйте fit_transform на обучающих данных.

Примечание

fit(X, y).transform(X) не равно fit_transform(X, y), поскольку в fit_transform для кодирования используется схема кросс-фиттинга. Подробности см. в Руководстве пользователя.

Параметры:
Xarray-like формы (n_samples, n_features)

Данные, используемые для определения категорий каждого признака.

yarray-like формы (n_samples,)

Целевые данные, используемые для кодирования категорий.

Возвращает:
selfobject

Обученный кодировщик.

fit_transform(X, y, **params)[исходный код]

Обучить TargetEncoder и преобразовать X с помощью целевого кодирования.

Этот метод использует схему кросс-фиттинга, чтобы предотвратить утечку целевой переменной и переобучение последующих предикторов. Это рекомендуемый метод кодирования обучающих данных.

Примечание

fit(X, y).transform(X) не равно fit_transform(X, y), поскольку в fit_transform для кодирования используется схема кросс-фиттинга. Подробности см. в Руководстве пользователя.

Параметры:
Xarray-like формы (n_samples, n_features)

Данные, используемые для определения категорий каждого признака.

yarray-like формы (n_samples,)

Целевые данные, используемые для кодирования категорий.

**paramsdict

Параметры, передаваемые внутреннему объекту CV.

Можно использовать только вместе с генератором перекрёстной проверки в качестве объекта CV.

Например, groups (array-like формы (n_samples,)) можно передать разделителю перекрёстной проверки, принимающему groups, например GroupKFold или StratifiedGroupKFold.

Добавлено в версии 1.9: Доступно только если enable_metadata_routing=True, что можно задать с помощью sklearn.set_config(enable_metadata_routing=True). Дополнительные сведения см. в Руководстве пользователя по маршрутизации метаданных.

Возвращает:
X_transndarray формы (n_samples, n_features) или (n_samples, (n_features * n_classes))

Преобразованный входной массив.

get_feature_names_out(input_features=None)[исходный код]

Получить имена выходных признаков для преобразования.

Параметры:
input_featuresarray-like из str или None, по умолчанию=None

Не используется; параметр присутствует для согласованности API.

Возвращает:
feature_names_outndarray объектов str

Имена преобразованных признаков. Используется feature_names_in_, если оно определено; в противном случае генерируются следующие имена входных признаков: ["x0", "x1", ..., "x(n_features_in_ - 1)"]. Если type_of_target_ имеет значение «multiclass», имена имеют формат «<feature_name>_<class_name>».

get_metadata_routing()[исходный код]

Получить настройки маршрутизации метаданных этого объекта.

Ознакомьтесь с Руководством пользователя, чтобы узнать, как работает механизм маршрутизации.

Добавлено в версии 1.9.

Возвращает:
routingMetadataRouter

MetadataRouter, содержащий информацию о маршрутизации.

get_params(deep=True)[исходный код]

Получить параметры этого оценщика.

Параметры:
deepbool, по умолчанию=True

Если True, возвращает параметры этого оценщика и содержащихся в нём подобъектов, которые являются оценщиками.

Возвращает:
paramsdict

Имена параметров, сопоставленные их значениям.

set_output(*, transform=None)[исходный код]

Задать контейнер для выходных данных.

Дополнительные сведения см. в руководстве пользователя, а пример использования API — в разделе Знакомство с API set_output.

Параметры:
transform{«default», «pandas», «polars»}, по умолчанию=None

Настроить формат вывода для transform и fit_transform.

  • "default": формат вывода преобразователя по умолчанию
  • "pandas": вывод в формате DataFrame
  • "polars": вывод в формате Polars
  • None: конфигурация преобразования не изменяется

Добавлено в версии 1.4: Добавлен вариант "polars".

Возвращает:
selfэкземпляр оценщика

Экземпляр оценщика.

set_params(**params)[исходный код]

Задать параметры этого оценщика.

Метод работает как с простыми оценщиками, так и с вложенными объектами (например, Pipeline). Параметры последних имеют формат <component>__<parameter>, что позволяет обновлять каждый компонент вложенного объекта.

Параметры:
**paramsdict

Параметры оценщика.

Возвращает:
selfэкземпляр оценщика

Экземпляр оценщика.

transform(X)[исходный код]

Преобразовать X с помощью целевого кодирования.

Для преобразования тестовых данных этот метод внутри использует атрибут encodings_, изученный во время TargetEncoder.fit_transform.

Примечание

fit(X, y).transform(X) не равно fit_transform(X, y), поскольку в fit_transform для кодирования используется схема кросс-фиттинга. Подробности см. в Руководстве пользователя.

Параметры:
Xarray-like формы (n_samples, n_features)

Данные, используемые для определения категорий каждого признака.

Возвращает:
X_transndarray формы (n_samples, n_features) или (n_samples, (n_features * n_classes))

Преобразованный входной массив.

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

Поддержка категориальных признаков в градиентном бустинге

Сравнение кодировщика целевой переменной с другими кодировщиками

Внутренний кросс-фиттинг кодировщика целевой переменной

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

© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.preprocessing.TargetEncoder.html

Spec-Zone.ru

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