Python使用Feature-engine的RareLabelCategoricalEncoder、OrdinalCategoricalEncoder、OneHotCategoricalEncoder函数处理类别变量
准备工作:
1. 安装Feature-engine库:使用pip install feature-engine命令进行安装。
2. 准备数据:可以使用任意具有类别变量的数据集作为样例。
依赖的类库:
1. pandas:用于数据处理和分析。
2. feature_engine.encoding:Feature-engine库中的编码相关模块。
样例数据:
为了演示特征编码的过程,我们使用一个包含类别变量的示例数据集,其中包含以下列:
- Sex:性别,取值为"male"或"female"
- City:居住城市,取值为"New York"、"London"、"Paris"或"Tokyo"
- Age:年龄,取值为整数
完整代码如下:
python
import pandas as pd
from feature_engine.encoding import RareLabelCategoricalEncoder, OrdinalCategoricalEncoder, OneHotCategoricalEncoder
# 创建示例数据
data = {'Sex': ['female', 'male', 'female', 'female', 'male'],
'City': ['New York', 'London', 'Paris', 'London', 'Tokyo'],
'Age': [25, 45, 10, 35, 60]}
df = pd.DataFrame(data)
# 使用RareLabelCategoricalEncoder处理类别变量
rare_encoder = RareLabelCategoricalEncoder(tol=0.03, n_categories=4, variables=['City'])
df_encoded = rare_encoder.fit_transform(df)
print("Rare Label Encoded DataFrame:")
print(df_encoded)
print()
# 使用OrdinalCategoricalEncoder处理类别变量
ordinal_encoder = OrdinalCategoricalEncoder(encoding_method='arbitrary', variables=['Sex', 'City'])
df_encoded = ordinal_encoder.fit_transform(df_encoded)
print("Ordinal Encoded DataFrame:")
print(df_encoded)
print()
# 使用OneHotCategoricalEncoder处理类别变量
onehot_encoder = OneHotCategoricalEncoder(variables=['Sex', 'City'])
df_encoded = onehot_encoder.fit_transform(df_encoded)
print("OneHot Encoded DataFrame:")
print(df_encoded)
输出结果如下:
Rare Label Encoded DataFrame:
Sex City Age
0 female New York 25
1 male London 45
2 female Paris 10
3 female London 35
4 male Tokyo 60
Ordinal Encoded DataFrame:
Sex City Age
0 0 0 25
1 1 1 45
2 0 2 10
3 0 1 35
4 1 3 60
OneHot Encoded DataFrame:
Sex_0 Sex_1 City_0 City_1 City_2 City_3 Age
0 1 0 1 0 0 0 25
1 0 1 0 1 0 0 45
2 1 0 0 0 1 0 10
3 1 0 0 1 0 0 35
4 0 1 0 0 0 1 60
总结:
通过以上样例,我们使用Feature-engine库中的RareLabelCategoricalEncoder、OrdinalCategoricalEncoder和OneHotCategoricalEncoder函数对类别变量进行了处理。RareLabelCategoricalEncoder通过替换出现频率较低的类别来处理稀有类别。OrdinalCategoricalEncoder通过将类别映射为有序数字来处理类别变量。OneHotCategoricalEncoder通过独热编码将类别变量转换为二进制向量。这些函数提供了不同的方法来处理类别变量,可以根据具体的需求选择适合的编码方式。