OrdinalEncoder#

class sklearn.preprocessing.OrdinalEncoder(*, categories='auto', dtype=<class 'numpy.float64'>, handle_unknown='error', unknown_value=None, encoded_missing_value=nan, min_frequency=None, max_categories=None)[源代码]#

将类别特征编码为一个整元数组。

此Transformer的输入应该是一个类似数组的数组,表示类别(离散)特征所采用的值。这些特征被转换为有序的整数。这会导致每个要素产生一列整(0到n_category- 1)。

阅读更多的 User Guide .有关不同编码器的比较,请参阅: 比较目标编码器与其他编码器 .

Added in version 0.20.

参数:
categories“Auto”或类似数组的列表,默认=“Auto”

每个功能的类别(唯一值):

  • “自动”:根据训练数据自动确定类别。

  • 列表: categories[i] 保存第i列中预期的类别。传递的类别不应混合字符串和数字值,如果是数字值,则应进行排序。

使用的类别可以在 categories_ 属性

dtypenumber type, default=np.float64

所需的输出类型。

handle_unknown'错误',' use_encoded_value '},默认='错误'

当设置为“错误”时,如果转换期间存在未知的分类特征,将引发错误。当设置为“use_encoded_value”时,未知类别的编码值将设置为为参数给定的值 unknown_value .在 inverse_transform ,未知类别将被表示为无。

Added in version 0.24.

unknown_valueint或pp.nan,默认=无

当参数handle_unknown设置为“use_encoded_value”时,该参数是必需的,并且将设置未知类别的编码值。它必须与用于编码中的任何类别的值不同 fit .如果设置为NP.nan,则 dtype 参数必须是float dype。

Added in version 0.24.

encoded_missing_valueint或NP.nan,默认=NP.nan

缺失类别的编码值。如果设置为 np.nan ,那么 dtype 参数必须是float dype。

Added in version 1.1.

min_frequencyint或float,默认=无

指定最低频率,低于该频率的类别将被视为不频繁。

  • 如果 int ,基数较小的类别将被视为不常见。

  • 如果 float ,基数小于 min_frequency * n_samples 将被认为不常见。

Added in version 1.3: 阅读更多的 User Guide .

max_categoriesint,默认=无

在考虑不频繁类别时指定每个输入功能的输出类别数上限。如果有不常见的类别, max_categories 包括代表不频繁类别的类别以及频繁类别。如果 None ,输出特征的数量没有限制。

max_categoriesnot 考虑到缺失或未知的类别。设置 unknown_valueencoded_missing_value 将唯一的整数代码增加一个。这可能会导致高达 max_categories + 2 integer代码。

Added in version 1.3: 阅读更多的 User Guide .

属性:
categories_list of arrays

每个要素的类别在期间确定 fit (in X中特征的顺序并对应于的输出 transform ).这不包括期间未出现的类别 fit .

n_features_in_int

期间看到的功能数量 fit .

Added in version 1.0.

feature_names_in_ :nd形状数组 (n_features_in_ ,)nd数组形状(

Names of features seen during fit. Defined only when X has feature names that are all strings.

Added in version 1.0.

infrequent_categories_ndray列表

每个特征的不常见类别。

参见

OneHotEncoder

对类别特征执行一次性编码。这种编码适用于低至中等基数的分类变量,无论是在监督设置还是无监督设置中。

TargetEncoder

使用分类或回归管道中的监督信号对分类特征进行编码。这种编码通常适合高基数的类别变量。

LabelEncoder

用0和之间的值对目标标签进行编码 n_classes-1 .

注意到

比例较高的 nan values, inferring categories becomes slow with Python versions before 3.10. The handling of nan values was improved from Python 3.10 onwards, (c.f. bpo-43475 ).

示例

给定具有两个特征的数据集,我们让编码器找到每个特征的唯一值,并将数据转换为有序编码。

>>> 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_categoriesmin_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)

用于确定每个功能类别的数据。

y没有一

忽视此参数仅为与兼容而存在 Pipeline .

返回:
self对象

安装编码器。

fit_transform(X, y=None, **fit_params)[源代码]#

适应数据,然后对其进行转换。

适合变压器 Xy 具有可选参数 fit_params 并返回的转换版本 X .

参数:
X形状类似阵列(n_samples,n_features)

输入样本。

y形状为(n_samples,)或(n_samples,n_outputs)的阵列状, 默认值=无

目标值(无监督转换)。

**fit_paramsdict

其他适合参数。

返回:
X_newndray形状数组(n_samples,n_features_new)

变形的数组。

get_feature_names_out(input_features=None)[源代码]#

获取用于转换的输出要素名称。

参数:
input_features字符串或无的类数组,默认=无

输入功能。

  • 如果 input_featuresNone 那么 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_out字符串对象的nd数组

与输入功能相同。

get_metadata_routing()[源代码]#

获取此对象的元数据路由。

请检查 User Guide 关于路由机制如何工作。

返回:
routingMetadataRequest

A MetadataRequest 封装路由信息。

get_params(deep=True)[源代码]#

获取此估计器的参数。

参数:
deep布尔,默认=True

如果为True,将返回此估计量和包含的作为估计量的子对象的参数。

返回:
paramsdict

参数名称映射到其值。

inverse_transform(X)[源代码]#

将数据转换回原始表示形式。

参数:
X形状类似阵列(n_samples,n_encoded_features)

转换后的数据。

返回:
X_tr形状的nd数组(n_samples,n_features)

逆变换数组。

set_output(*, transform=None)[源代码]#

设置输出容器。

看到 介绍 set_output API 了解如何使用API的示例。

参数:
transform{“默认”,“pandas”,“polars”},默认=无

配置输出 transformfit_transform .

  • "default" :Transformer的默认输出格式

  • "pandas" :DataFrame输出

  • "polars" :两极输出

  • None :转换配置不变

Added in version 1.4: "polars" 添加了选项。

返回:
self估计器实例

估计实例。

set_params(**params)[源代码]#

设置此估计器的参数。

该方法适用于简单估计器以及嵌套对象(例如 Pipeline ).后者具有以下形式的参数 <component>__<parameter> 以便可以更新嵌套对象的每个组件。

参数:
**paramsdict

估计参数。

返回:
self估计器实例

估计实例。

transform(X)[源代码]#

将X转换为有序代码。

参数:
X形状类似阵列(n_samples,n_features)

要编码的数据。

返回:
X_out形状的nd数组(n_samples,n_features)

转换的输入。