You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调整sklearn中OrdinalEncoder的有序特征编码顺序

OrdinalEncoder自定义编码顺序方案

异常原因

OrdinalEncoder默认按分类值的字典序自动分配编码,不会匹配业务侧自定义的顺序逻辑,因此出现编码结果不符合预期的问题。

调整方法

直接通过OrdinalEncoder的categories参数手动指定每个特征的取值顺序,编码器会按照列表从左到右的顺序从0开始依次分配编码,完全匹配你的自定义规则。

单特征场景代码示例

from sklearn.preprocessing import OrdinalEncoder
import numpy as np

# 按excellent=0、good=1、average=2、bad=3的规则,从左到右排列取值
custom_categories = [['excellent', 'good', 'average', 'bad']]
encoder = OrdinalEncoder(categories=custom_categories)

# 测试编码
sample_data = np.array([['excellent'], ['bad'], ['good'], ['average']])
encoded_result = encoder.fit_transform(sample_data)
print(encoded_result)
# 输出结果:[[0.] [3.] [1.] [2.]],完全符合预期

可选:异常值兼容配置

如果测试数据可能出现不在预设分类里的未知取值,可以新增参数避免报错,将未知值统一编码为指定数值:

encoder = OrdinalEncoder(
    categories=[['excellent', 'good', 'average', 'bad']],
    # 开启未知值兼容
    handle_unknown='use_encoded_value',
    # 未知值统一编码为4
    unknown_value=4
)

多特征场景扩展

如果需要同时处理多个有序分类特征,按特征顺序依次传入每个特征的取值顺序列表即可:

# 第一个特征为评级、第二个特征为满意度的自定义顺序示例
multi_custom_categories = [
    ['excellent', 'good', 'average', 'bad'],
    ['high', 'medium', 'low']
]
multi_encoder = OrdinalEncoder(categories=multi_custom_categories)

内容的提问来源于stack exchange,提问作者zjh1001

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 00:24:03