Spec-Zone.ru › scikit-learn

OrdinalEncoder

classsklearn.preprocessing.OrdinalEncoder(*, categories='auto', dtype=<class 'numpy.float64'>, handle_unknown='error', unknown_value=None, encoded_missing_value=nan, min_frequency=None, max_categories=None)[источник]

Кодирует категориальные признаки в виде целочисленного массива.

На вход этому преобразователю следует передавать массивоподобный объект из целых чисел или строк, обозначающих значения категориальных (дискретных) признаков. Признаки преобразуются в порядковые целые числа. В результате для каждого признака получается один столбец целых чисел (от 0 до n_categories - 1).

Подробнее см. в руководстве пользователя. Сравнение различных кодировщиков см. в разделе Сравнение Target Encoder с другими кодировщиками.

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

Параметры:
categories‘auto’ или список массивоподобных объектов, по умолчанию=’auto’

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

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

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

dtypeчисловой тип, по умолчанию=np.float64

Требуемый тип данных выходных данных.

handle_unknown{‘error’, ‘use_encoded_value’}, по умолчанию=’error’

Если задано значение ‘error’, при преобразовании будет вызвана ошибка, если встретится неизвестный категориальный признак. Если задано значение ‘use_encoded_value’, неизвестным категориям будет присвоено закодированное значение, указанное в параметре unknown_value. В inverse_transform неизвестная категория будет обозначена как None.

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

unknown_valueint или np.nan, по умолчанию=None

Если для параметра handle_unknown задано значение ‘use_encoded_value’, этот параметр является обязательным и задаёт закодированное значение неизвестных категорий. Оно должно отличаться от значений, используемых для кодирования категорий в fit. Если задано значение np.nan, параметр dtype должен иметь тип float.

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

encoded_missing_valueint или np.nan, по умолчанию=np.nan

Закодированное значение пропущенных категорий. Если задано значение np.nan, параметр dtype должен иметь тип float.

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

min_frequencyint или float, по умолчанию=None

Задаёт минимальную частоту, ниже которой категория считается редкой.

  • Если int, категории с меньшей кардинальностью будут считаться редкими.
  • Если float, категории с кардинальностью меньше min_frequency * n_samples будут считаться редкими.

Добавлено в версии 1.3: Подробнее см. в руководстве пользователя.

max_categoriesint, по умолчанию=None

Задаёт верхний предел числа выходных категорий для каждого входного признака с учётом редких категорий. Если есть редкие категории, max_categories включает категорию, представляющую редкие категории, наряду с частыми категориями. Если None, число выходных признаков не ограничено.

max_categories не учитывают пропущенные или неизвестные категории. Если задать unknown_value или encoded_missing_value целым числом, количество уникальных целочисленных кодов увеличится на единицу для каждого параметра. В результате может получиться до max_categories + 2 целочисленных кодов.

Добавлено в версии 1.3: Подробнее см. в руководстве пользователя.

Атрибуты:
categories_список массивов

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

n_features_in_int

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

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

feature_names_in_ndarray формы (n_features_in_,)

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

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

infrequent_categories_список ndarray

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

См. также

OneHotEncoder

Выполняет унитарное кодирование категориальных признаков. Такое кодирование подходит для категориальных переменных с низкой и средней кардинальностью как в контролируемых, так и в неконтролируемых задачах.

TargetEncoder

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

LabelEncoder

Кодирует целевые метки значениями от 0 до n_classes-1.

Примеры

Для набора данных с двумя признаками позволим кодировщику найти уникальные значения для каждого признака и преобразовать данные в порядковое представление.

>>> from sklearn.preprocessing import OrdinalEncoder
>>> enc = OrdinalEncoder()
>>> X = [['Male', 1], ['Female', 3], ['Female', 2]]
>>> enc.fit(X)
OrdinalEncoder()
>>> enc.categories_
[array(['Female', 'Male'], dtype=object), array([1, 2, 3], dtype=object)]
>>> enc.transform([['Female', 3], ['Male', 1]])
array([[0., 2.],
       [1., 0.]])
>>> enc.inverse_transform([[1, 0], [0, 1]])
array([['Male', 1],
       ['Female', 2]], dtype=object)

По умолчанию OrdinalEncoder допускает пропущенные значения, распространяя их.

>>> import numpy as np
>>> X = [['Male', 1], ['Female', 3], ['Female', np.nan]]
>>> enc.fit_transform(X)
array([[ 1.,  0.],
       [ 0.,  1.],
       [ 0., nan]])

Для кодирования пропущенных значений можно использовать параметр encoded_missing_value.

>>> enc.set_params(encoded_missing_value=-1).fit_transform(X)
array([[ 1.,  0.],
       [ 0.,  1.],
       [ 0., -1.]])

Чтобы включить обработку редких категорий, задайте max_categories или min_frequency. В следующем примере «a» и «d» считаются редкими и объединяются в одну категорию, «b» и «c» образуют собственные категории, неизвестные значения кодируются как 3, а пропущенные значения — как 4.

>>> X_train = np.array(
...     [["a"] * 5 + ["b"] * 20 + ["c"] * 10 + ["d"] * 3 + [np.nan]],
...     dtype=object).T
>>> enc = OrdinalEncoder(
...     handle_unknown="use_encoded_value", unknown_value=3,
...     max_categories=3, encoded_missing_value=4)
>>> _ = enc.fit(X_train)
>>> X_test = np.array([["a"], ["b"], ["c"], ["d"], ["e"], [np.nan]], dtype=object)
>>> enc.transform(X_test)
array([[2.],
       [0.],
       [1.],
       [2.],
       [3.],
       [4.]])
fit(X, y=None)[источник]

Обучает OrdinalEncoder на X.

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

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

yNone

Игнорируется. Этот параметр существует только для совместимости с Pipeline.

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

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

fit_transform(X, y=None, **fit_params)[источник]

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

Обучает преобразователь на X и y с необязательными параметрами fit_params и возвращает преобразованную версию X.

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

Входные образцы.

yмассивоподобный объект формы (n_samples,) или (n_samples, n_outputs), по умолчанию=None

Целевые значения (None для неконтролируемых преобразований).

**fit_paramsdict

Дополнительные параметры обучения. Передавайте их только в том случае, если оцениватель принимает дополнительные параметры в методе fit.

Возвращает:
X_newndarray формы (n_samples, n_features_new)

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

get_feature_names_out(input_features=None)[источник]

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

Параметры:
input_featuresмассивоподобный объект из строк или 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()[источник]

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

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

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

Объект MetadataRequest, содержащий сведения о маршрутизации.

get_params(deep=True)[источник]

Получает параметры этого оценивателя.

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

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

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

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

inverse_transform(X)[источник]

Преобразует данные обратно в исходное представление.

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

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

Возвращает:
X_originalndarray формы (n_samples, n_features)

Массив после обратного преобразования.

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 в порядковые коды.

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

Данные для кодирования.

Возвращает:
X_outndarray формы (n_samples, n_features)

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

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

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

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

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

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

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

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

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

Основные нововведения 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.OrdinalEncoder.html

Spec-Zone.ru

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