序数编码器#
- 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)[source]#
- 将分类特征编码为整数数组。 - 此转换器的输入应为整数或字符串的数组,表示分类(离散)特征所取的值。特征转换为序数整数。这导致每个特征只有一列整数(0 到 n_categories - 1)。 - 更多信息请参见用户指南。有关不同编码器的比较,请参阅:比较目标编码器与其他编码器。 - 在0.20版本中添加。 - 参数:
- categories‘auto’ 或 array-like 列表,默认为 ‘auto’
- 每个特征的类别(唯一值) - ‘auto’:从训练数据中自动确定类别。 
- 列表: - categories[i]存储第 i 列中预期的类别。传入的类别不应混合字符串和数值,并且在数值情况下应已排序。
 - 使用的类别可以在 - categories_属性中找到。
- dtype数字类型,默认值=np.float64
- 输出的所需 dtype。 
- handle_unknown{'error', 'use_encoded_value'},默认值='error'
- 设置为 'error' 时,如果在转换过程中存在未知的分类特征,则会引发错误。设置为 'use_encoded_value' 时,未知类别的编码值将设置为参数 - unknown_value给定的值。在- inverse_transform中,未知类别将表示为 None。- 0.24 版本新增。 
- unknown_value整数或 np.nan,默认值=None
- 当参数 handle_unknown 设置为 'use_encoded_value' 时,此参数是必需的,它将设置未知类别的编码值。它必须与用于在 - fit中编码任何类别的值不同。如果设置为 np.nan,则- dtype参数必须是浮点型 dtype。- 0.24 版本新增。 
- encoded_missing_value整数或 np.nan,默认值=np.nan
- 缺失类别的编码值。如果设置为 - np.nan,则- dtype参数必须是浮点型 dtype。- 1.1 版本新增。 
- min_frequency整数或浮点数,默认值=None
- 指定类别低于哪个频率将被视为不常见。 - 如果为 - int,则基数较小的类别将被视为不常见。
- 如果为 - float,则基数小于- min_frequency * n_samples的类别将被视为不常见。
 - 1.3 版本新增: 在 用户指南 中了解更多信息。 
- max_categories整数,默认值=None
- 在考虑不常见类别时,指定每个输入特征的输出类别的上限。如果存在不常见类别,则 - max_categories包括表示不常见类别的类别以及常见类别。如果为- None,则对输出特征的数量没有限制。- max_categories**不**考虑缺失或未知类别。将- unknown_value或- encoded_missing_value设置为整数将分别使唯一整数代码的数量增加一个。这可能导致最多- max_categories + 2个整数代码。- 1.3 版本新增: 在 用户指南 中了解更多信息。 
 
- 属性:
- categories_数组列表
- 在 - fit期间确定的每个特征的类别(按照 X 中特征的顺序,并与- transform的输出相对应)。这并不包括在- fit期间未看到的类别。
- n_features_in_整数
- 在 fit 期间看到的特征数量。 - 1.0 版本新增。 
- feature_names_in_形状为 (n_features_in_,) 的 ndarray
- 在 fit 期间看到的特征名称。仅当 - X具有全部为字符串的特征名称时才定义。- 1.0 版本新增。 
- infrequent_categories_ndarray 列表
- 每个特征的不常见类别。 
 
 - 另请参阅 - 备注 - 如果 - nan值比例很高,则在 3.10 之前的 Python 版本中,推断类别会变慢。从 Python 3.10 开始,对- nan值的处理得到了改进(参见 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)[source]#
- 将 OrdinalEncoder 拟合到 X。 - 参数:
- X形状为 (n_samples, n_features) 的类数组
- 用于确定每个特征类别的数。 
- yNone
- 忽略。此参数仅为了与 - Pipeline保持兼容性而存在。
 
- 返回值:
- self对象
- 已拟合的编码器。 
 
 
 - fit_transform(X, y=None, **fit_params)[source]#
- 拟合数据,然后转换数据。 - 使用可选参数 - fit_params将转换器拟合到- X和- y,并返回- X的转换版本。- 参数:
- X形状为 (n_samples, n_features) 的类数组
- 输入样本。 
- yarray-like 形状为 (n_samples,) 或 (n_samples, n_outputs),默认值=None
- 目标值(对于无监督转换,则为 None)。 
- **fit_paramsdict
- 附加拟合参数。 
 
- 返回值:
- X_new形状为 (n_samples, n_features_new) 的 ndarray 数组
- 转换后的数组。 
 
 
 - get_feature_names_out(input_features=None)[source]#
- 获取转换的输出特征名称。 - 参数:
- input_features字符串类型的 array-like 或 None,默认值=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_out字符串对象的 ndarray
- 与输入特征相同。 
 
 
 - get_metadata_routing()[source]#
- 获取此对象的元数据路由。 - 请查看用户指南了解路由机制的工作原理。 - 返回值:
- routingMetadataRequest
- 一个 - MetadataRequest封装路由信息。
 
 
 - get_params(deep=True)[source]#
- 获取此估计器的参数。 - 参数:
- deepbool,默认为 True
- 如果为 True,则将返回此估计器和包含的作为估计器的子对象的参数。 
 
- 返回值:
- paramsdict
- 参数名称与其值的映射。 
 
 
 - property infrequent_categories_#
- 每个特征的不常见类别。 
 - inverse_transform(X)[source]#
- 将数据转换回原始表示。 - 参数:
- X形状为 (n_samples, n_encoded_features) 的 array-like
- 转换后的数据。 
 
- 返回值:
- X_tr形状为 (n_samples, n_features) 的 ndarray
- 逆转换后的数组。 
 
 
 - set_output(*, transform=None)[source]#
- 设置输出容器。 - 查看介绍 set_output API了解如何使用 API 的示例。 - 参数:
- transform{"default", "pandas", "polars"},默认为 None
- 配置 - transform和- fit_transform的输出。- "default":转换器的默认输出格式
- "pandas":DataFrame 输出
- "polars":Polars 输出
- None:转换配置保持不变
 - 版本 1.4 中新增: 添加了 - "polars"选项。
 
- 返回值:
- self估计器实例
- 估计器实例。 
 
 
 
 
     
 
 
 
 
 
 
 
