Spec-Zone.ru › scikit-learn

TargetEncoder

классsklearn.preprocessing.TargetEncoder(categories='auto', target_type='auto', smooth='auto', cv=5, shuffle=True, random_state=None)[source]

Кодировщик целей для регрессии и классификации.

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

Когда тип целевой переменной — «многоклассовый», кодирование основано на оценке условной вероятности для каждого класса. Целевая переменная сначала бинаризуется с помощью схемы «один против всех» через 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,) массивов, по умолчанию «auto»

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

  • "auto" : Автоматически определить категории из обучающих данных.
  • список : 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, по умолчанию 5

Определяет количество фолдов в стратегии перекрестного обучения, используемой в fit_transform. Для классификационных целевых переменных используется StratifiedKFold, а для непрерывных целевых переменных — KFold.

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

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

random_stateint, RandomState instance или None, по умолчанию None

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

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

Наборы кодировок, обученные по всем 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,) массивов

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

target_type_str

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

target_mean_float

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

n_features_in_int

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

feature_names_in_массив формы (n_features_in_,)

Названия признаков, встреченных во время fit. Определены только тогда, когда X имеет имена признаков, которые все являются строками.

classes_массив или None

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

См. также

OrdinalEncoder

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

OneHotEncoder

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

Ссылки

[MIC]

Micci-Barreca, Daniele. “A preprocessing scheme for high-cardinality categorical attributes in classification and prediction problems” SIGKDD Explor. Newsl. 3, 1 (July 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...)
>>> enc_high_smooth.encodings_
[array([44..., 44..., 44...])]
>>> # 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([20..., 80..., 43...])]
fit(X, y)[source]

Подгоняет TargetEncoder к X и y.

Параметры:
Xмассив-подобный, форма (n_samples, n_features)

Данные для определения категорий каждого признака.

yмассив-подобный, форма (n_samples,)

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

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

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

fit_transform(X, y)[source]

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

Примечание

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

Параметры:
Xмассив-подобный, форма (n_samples, n_features)

Данные для определения категорий каждого признака.

yмассив-подобный, форма (n_samples,)

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

Возвращает:
X_transмассив NumPy с формой (n_samples, n_features) или (n_samples, (n_features * n_classes))

Преобразованный ввод.

get_feature_names_out(input_features=None)[source]

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

Параметры:
input_featuresмассив-подобный str или None, по умолчанию None

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

Возвращает:
feature_names_outмассив str-объектов

Преобразованные имена признаков. feature_names_in_ используется, если он не определен, в противном случае генерируются следующие имена входных признаков: ["x0", "x1", ..., "x(n_features_in_ - 1)"]. Когда type_of_target_ равно “многоклассовому”, имена имеют формат ‘<имя_признака>_<имя_класса>’.

get_metadata_routing()[source]

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

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

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

MetadataRequest encapsulating routing information.

get_params(deep=True)[source]

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

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

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

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

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

propertyinfrequent_categories_

Редкие категории для каждого признака.

set_output(*, transform=None)[source]

Установка контейнера вывода.

См. Введение в API set_output для примера использования API.

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

Настройка вывода для transform и fit_transform.

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

Добавлена в версии 1.4: "polars" опция была добавлена.

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

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

set_params(**params)[source]

Установить параметры этого оценщика.

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

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

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

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

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

transform(X)[source]

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

Примечание

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

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

Данные для определения категорий каждого признака.

Возвращаемые значения:
X_transndarray of shape (n_samples, n_features) или (n_samples, (n_features * n_classes))

Преобразованный ввод.

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

Основные моменты выпуска scikit-learn 1.3

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

Внутреннее перекрёстное обучение Target Encoder

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

Spec-Zone.ru

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