如何在R中基于Leads列对Product.Package.Level进行序数编码?
基于Leads统计量对Product.Package.Level进行序数编码(Feature-engine实现)
直接用Feature-engine的OrdinalEncoder就能搞定,它支持根据目标变量的均值/总和自动确定类别编码顺序,步骤如下:
1. 安装Feature-engine(未安装时执行)
pip install feature-engine
2. 导入依赖并加载数据
import pandas as pd from feature_engine.encoding import OrdinalEncoder # 替换为你的数据加载方式,比如读取CSV # df = pd.read_csv("your_data_file.csv")
3. 配置并拟合编码器
按Leads均值排序编码
# 初始化编码器:指定目标变量、编码依据为Leads均值 encoder_mean = OrdinalEncoder( variables=['Product.Package.Level'], encoding_method='mean', target='Leads' ) # 拟合数据,编码器自动计算每个类别的Leads均值并排序 encoder_mean.fit(df) # 应用编码到数据框 df_encoded_mean = encoder_mean.transform(df)
按Leads总和排序编码
只需把encoding_method改为'sum'即可:
encoder_sum = OrdinalEncoder( variables=['Product.Package.Level'], encoding_method='sum', target='Leads' ) encoder_sum.fit(df) df_encoded_sum = encoder_sum.transform(df)
4. 查看编码规则
拟合完成后,可通过encoder_dict_属性查看每个类别的具体编码值:
print(encoder_mean.encoder_dict_)
输出示例:{'Product.Package.Level': {'基础套餐': 0, '进阶套餐': 1, '旗舰套餐': 2}}(顺序由Leads均值从低到高排列)
注意事项
- 若数据存在缺失值,需先通过
MissingImputer等工具处理,否则编码器会报错 - 编码默认按统计量从低到高分配数值,如需反向顺序,可后续对编码结果做反转处理
内容的提问来源于stack exchange,提问作者Jiaming He
相关产品推荐
相关产品推荐

