CountFrequencyEncoder#
- class feature_engine.encoding.CountFrequencyEncoder(encoding_method='count', variables=None, missing_values='raise', ignore_format=False, unseen='ignore')[源代码][源代码]#
CountFrequencyEncoder() 用类别中观察次数或百分比替换类别。
例如,在变量颜色中,如果有10个观测值是蓝色,蓝色将被替换为10。或者,如果有10%的观测值是蓝色,蓝色将被替换为0.1。
CountFrequencyEncoder() 默认只对分类变量(类型为 ‘object’ 或 ‘categorical’)进行编码。你可以传递一个变量列表进行编码。或者,编码器会找到并编码所有分类变量(类型为 ‘object’ 或 ‘categorical’)。
使用
ignore_format=True
你可以选择将数值变量也进行编码。这个过程是相同的,你可以输入要编码的变量列表,或者转换器会自动选择所有变量。编码器首先将类别映射到每个变量的计数或频率(拟合)。然后,编码器用这些数字替换类别(转换)。
更多详情请参阅 用户指南。
- 参数
- encoding_method: str, default=’count’
所需的编码方法。
‘count’: 每个类别的观察次数
‘frequency’: 每个类别的观察值百分比
- 变量: 列表, 默认=无
将要编码的分类变量的列表。如果为 None,编码器将默认查找并转换所有类型为对象或分类的变量。你也可以让转换器接受数值变量,参见参数
ignore_format
。- missing_values: string, default=’raise’
指示是否应忽略缺失值或引发异常。如果为
'raise'
,当fit
或transform
的数据集包含缺失值时,转换器将返回错误。如果为'ignore'
,在学习参数或执行转换时将忽略缺失数据。- ignore_format: bool, default=False
此转换器仅对对象类型或分类类型的变量进行操作。要覆盖此行为并允许转换器也转换数值变量,请设置为
True
。如果
ignore_format
为False
,编码器将自动选择类型为对象或分类的变量,或检查用户输入的变量是否为对象或分类类型。如果为True
,编码器将选择所有变量或接受用户输入的所有变量,包括那些被转换为数值类型的变量。简而言之,当你想要编码数值变量时,设置为
True
。- unseen: string, default=’ignore’
指示在转换过程中遇到训练集中不存在的类别时应采取的操作。如果为
'raise'
,则未见过的类别将引发错误。如果为'ignore'
,则未见过的类别将被编码为 NaN,并会引发警告。如果为'encode'
,未见过的类别将被编码为 0(零)。
- 属性
- encoder_dict_:
按变量、按类别统计或频率的字典。
- 变量_
将被转换的变量组。
- feature_names_in_:
列出在
fit
过程中看到的特征名称。- n_features_in_:
在拟合过程中使用的训练集中的特征数量。
参见
feature_engine.encoding.RareLabelEncoder
category_encoders.count.CountEncoder
注释
在编码训练集中未出现的类别时,将引入NAN。如果发生这种情况,请尝试使用RareLabelEncoder()对不常见的类别进行分组,或设置`unseen=’encode’`。
在开源包 Category encoders 中有一个类似的实现。
示例
>>> import pandas as pd >>> from feature_engine.encoding import CountFrequencyEncoder >>> X = pd.DataFrame(dict(x1 = [1,2,3,4], x2 = ["c", "a", "b", "c"])) >>> cf = CountFrequencyEncoder(encoding_method='count') >>> cf.fit(X) >>> cf.transform(X) x1 x2 0 1 2 1 2 1 2 3 1 3 4 2
>>> cf = CountFrequencyEncoder(encoding_method='frequency') >>> cf.fit(X) >>> cf.transform(X) x1 x2 0 1 0.50 1 2 0.25 2 3 0.25 3 4 0.50
方法
拟合:
学习每个类别、每个变量的计数或频率。
fit_transform:
拟合数据,然后进行转换。
get_feature_names_out:
获取转换的输出特征名称。
get_params:
获取此估计器的参数。
设置参数:
设置此估计器的参数。
inverse_transform:
将数据转换回原始表示形式。
变换:
将类别编码为数字。
- fit(X, y=None)[源代码][源代码]#
学习用于替换类别的计数或频率。
- 参数
- X: pandas 数据框,形状为 = [样本数, 特征数]
训练数据集。可以是整个数据框,而不仅仅是需要转换的变量。
- y: pandas Series, 默认 = None
在这个编码器中不需要 y。你可以传递 y 或 None。
- fit_transform(X, y=None, **fit_params)[源代码]#
拟合数据,然后进行转换。
使用可选参数
fit_params
将转换器拟合到X
和y
,并返回X
的转换版本。- 参数
- X类似数组的形状 (n_samples, n_features)
输入样本。
- y类似数组的形状 (n_samples,) 或 (n_samples, n_outputs), 默认=None
目标值(无监督转换为 None)。
- **fit_参数dict
附加的拟合参数。
- 返回
- X_newndarray 数组的形状为 (n_samples, n_features_new)
转换后的数组。
- get_metadata_routing()[源代码]#
获取此对象的元数据路由。
请查看 用户指南 以了解路由机制的工作原理。
- 返回
- 路由MetadataRequest
一个封装了路由信息的
MetadataRequest
。
- get_params(deep=True)[源代码]#
获取此估计器的参数。
- 参数
- 深度bool, 默认=True
如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。
- 返回
- 参数dict
参数名称映射到它们的值。
- inverse_transform(X)[源代码]#
将编码后的变量转换回原始值。
- 参数
- X: pandas 数据框,形状为 = [样本数, 特征数]。
转换后的数据框。
- 返回
- X_tr: 形状为 [n_samples, n_features] 的 pandas 数据框。
未经转换的数据框,包含原始值的分类变量。
- rtype
DataFrame
..