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)
-
Преобразованные входные данные.
Примеры из галереи
© 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