【发布时间】:2017-03-12 07:11:31
【问题描述】:
如何处理 sk-learn 中标签编码的未知值? 标签编码器只会在检测到新标签的情况下崩溃。
我想要的是通过 one-hot-encoder 对分类变量进行编码。但是,sk-learn 不支持字符串。所以我在每一列上都使用了一个标签编码器。
我的问题是在管道的交叉验证步骤中出现了未知标签。
基本的 one-hot-encoder 可以选择忽略这种情况。
apriori pandas.getDummies /cat.codes 是不够的,因为管道应该处理现实生活中可能包含未知标签的新传入数据。
是否可以为此使用CountVectorizer?
【问题讨论】:
-
您有用于此目的的示例插图吗?
-
你能捕捉到异常,记录它(或其他),然后继续吗?还是直接忽略它们?
-
如果将预测模型部署为 API,它很可能会遇到未知的特征标签。我该如何在sklearn中处理?您是否建议将错误传播到 API?
-
@GeorgHeiler,您是否尝试过查看
DictVectorizer,它对字符串特征进行二进制一热编码?但是,您需要输入字典列表。因此,选择存在分类值的子集并执行df[cat_cols].to_dict(orient='records')之类的操作来创建字典列表的映射,然后将其馈送到DictVectorizer。这些也可以包含在管道中,供 scikit-learn 估计器使用。 -
@NickilMaveli 我用它做了一些试验,但还没有让它工作。
标签: python pandas scikit-learn dummy-variable one-hot-encoding