OrdinalEncoder#

класс sklearn.preprocessing.OrdinalEncoder(*, categories='auto', dtype= '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.

Параметры:
категории'auto' или список array-like, по умолчанию='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, default=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

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

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

feature_names_in_ndarray формы (n_features_in_,)

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

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

infrequent_categories_list of ndarray

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

Смотрите также

OneHotEncoder

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

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.

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

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

yNone

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

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

Обученный энкодер.

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

Обучение на данных с последующим преобразованием.

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

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

Входные выборки.

yarray-like формы (n_samples,) или (n_samples, n_outputs), default=None

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

**fit_paramsdict

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

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

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

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

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

Параметры:
input_featuresarray-like из 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_ if feature_names_in_ определен.

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

То же, что и входные признаки.

6332()[источник]#

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

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

Возвращает:
маршрутизацияMetadataRequest

A MetadataRequest Инкапсуляция информации о маршрутизации.

get_params(глубокий=True)[источник]#

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

Параметры:
глубокийbool, по умолчанию=True

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

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

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

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

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

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

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

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

Обратно преобразованный массив.

set_output(*, преобразовать=None)[источник]#

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

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

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

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

  • "default": Формат вывода трансформера по умолчанию

  • "pandas": DataFrame вывод

  • "polars": Вывод Polars

  • None: Конфигурация преобразования не изменена

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

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

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

set_params(**params)[источник]#

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

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

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

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

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

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

преобразовать(X)[источник]#

Преобразовать X в порядковые коды.

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

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

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

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