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)[源码]#
将分类特征编码为整数数组。
该转换器的输入应为类似数组的整数或字符串,表示类别(离散)特征所取的值。特征将被转换为序数整数。这将为每个特征生成一列整数(0 到 n_categories - 1)。
在 用户指南 中阅读更多信息。有关不同编码器的比较,请参阅:目标编码器与其他编码器的比较。
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参数必须是浮点类型。0.24 版本新增。
- encoded_missing_valueint 或 np.nan, 默认=np.nan
缺失类别的编码值。如果设置为
np.nan,则dtype参数必须是浮点类型。版本 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 版本中新增: 在 用户指南 中阅读更多信息。
- 属性:
另请参阅
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。
- 参数:
- Xshape 为 (n_samples, n_features) 的 array-like
用于确定每个特征类别的数据。
- yNone
忽略。此参数仅用于与
Pipeline的兼容性。
- 返回:
- selfobject
已拟合的编码器。
- fit_transform(X, y=None, **fit_params)[源码]#
拟合数据,然后对其进行转换。
使用可选参数
fit_params将转换器拟合到X和y,并返回X的转换版本。- 参数:
- Xshape 为 (n_samples, n_features) 的 array-like
输入样本。
- y形状为 (n_samples,) 或 (n_samples, n_outputs) 的类数组对象,默认=None
目标值(对于无监督转换,为 None)。
- **fit_paramsdict
额外的拟合参数。仅当估计器在其
fit方法中接受额外的参数时才传递。
- 返回:
- X_newndarray array of shape (n_samples, n_features_new)
转换后的数组。
- get_feature_names_out(input_features=None)[源码]#
获取转换的输出特征名称。
- 参数:
- input_featuresarray-like of str or None, default=None
输入特征。
如果
input_features为None,则使用feature_names_in_作为输入特征名称。如果feature_names_in_未定义,则生成以下输入特征名称:["x0", "x1", ..., "x(n_features_in_ - 1)"]。如果
input_features是 array-like,则如果定义了feature_names_in_,input_features必须与feature_names_in_匹配。
- 返回:
- feature_names_outstr 对象的 ndarray
与输入特征相同。
- get_metadata_routing()[源码]#
获取此对象的元数据路由。
请查阅 用户指南,了解路由机制如何工作。
- 返回:
- routingMetadataRequest
封装路由信息的
MetadataRequest。
- get_params(deep=True)[源码]#
获取此估计器的参数。
- 参数:
- deepbool, default=True
如果为 True,将返回此估计器以及包含的子对象(如果它们是估计器)的参数。
- 返回:
- paramsdict
参数名称映射到其值。
- inverse_transform(X)[源码]#
将数据转换回原始表示。
- 参数:
- X形状为 (n_samples, n_encoded_features) 的类似数组
转换后的数据。
- 返回:
- X_original形状为 (n_samples, n_features) 的 ndarray
逆转换后的数组。
- set_output(*, transform=None)[源码]#
设置输出容器。
请参阅 用户指南 以了解更多详细信息,并参考 引入 set_output API 获取关于如何使用该 API 的示例。
- 参数:
- transform{“default”, “pandas”, “polars”}, default=None
配置
transform和fit_transform的输出。"default": 转换器的默认输出格式"pandas": DataFrame 输出"polars": Polars 输出None: 转换配置保持不变
1.4 版本新增: 添加了
"polars"选项。
- 返回:
- selfestimator instance
估计器实例。