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-
Выполняет унитарное кодирование категориальных признаков. Это неконтролируемое кодирование лучше подходит для категориальных переменных с небольшим числом уникальных значений, поскольку создаёт новый признак для каждой уникальной категории.
Список литературы
Примеры
При использовании
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))
-
Преобразованный входной массив.
Примеры из галереи
© 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