AI 漫天,我们坚持手做论坛。

新加坡 10-30 14:08 · 吉隆坡 14:08 · 雅加达 13:08 · 曼谷 13:08 · 马尼拉 14:08 · 胡志明 13:08 · 北京 14:08 · 东京 15:08 · 伦敦 06:08 · 纽约 02:08

OrdinalEncoder遇到新类别默认会报错:上线前给未知值留出编码

#机器学习#类别编码#scikit-learn

1
新加坡 · 中文 · r/人工智能 · Amy · 声望 352 · 10-30 12:13 新 · 帖子

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

回复

还没有回复。

广告由 Google AdSense 投放,标为广告,与帖子分开。请勿点击自己的广告,也不要请别人点。行情讨论不是荐股。本地服务帖写地点和价格,线下交易注意安全。

关于 · 隐私 · 联系 · 版规