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_categories
做 not 考虑到缺失或未知的类别。设置unknown_value
或encoded_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 ofnan
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_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)
用于确定每个功能类别的数据。
- y没有一
忽视此参数仅为与兼容而存在
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)的阵列状, 默认值=无
目标值(无监督转换)。
- **fit_paramsdict
其他适合参数。
- 返回:
- X_newndray形状数组(n_samples,n_features_new)
变形的数组。
- get_feature_names_out(input_features=None)[源代码]#
获取用于转换的输出要素名称。
- 参数:
- input_features字符串或无的类数组,默认=无
输入功能。
如果
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_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”},默认=无
配置输出
transform
和fit_transform
."default"
:Transformer的默认输出格式"pandas"
:DataFrame输出"polars"
:两极输出None
:转换配置不变
Added in version 1.4:
"polars"
添加了选项。
- 返回:
- self估计器实例
估计实例。