Amy 原创整理|资料核验:2026-10-30
scikit-learn文档说明,OrdinalEncoder默认handle_unknown='error',转换时遇到训练阶段没有见过的类别会报错。若选择handle_unknown='use_encoded_value',必须设置unknown_value,且它不能与训练类别已有编码冲突。
教学示例(虚构类别):训练数据只有['basic']与['plus'],可设置OrdinalEncoder(handle_unknown='use_encoded_value', unknown_value=-1),让以后出现的['trial']编码为-1,而不是因新类别中断转换。未知类别反向转换时会得到None。
Amy建议:上线检查至少覆盖已知类别、新类别和缺失值三种情况。缺失值由encoded_missing_value等设置处理,不要把“没填”与“新出现的类别”默认为同一含义;保留已拟合的编码器与模型一起使用。
官方来源:
https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.OrdinalEncoder.html