【发布时间】:2018-04-28 04:59:47
【问题描述】:
我有一个训练数据集,并且正在构建一些机器学习模型。我无权访问测试集,并且想要处理在训练中未观察到测试中的分类特征之一的可能性。
这是一个玩具示例,说明了我的意思:
我有一个 DataFrame,old,像这样:
old = pd.DataFrame({"car":["Audi", "BMW", "Mazda"]})
看起来像这样:
car
0 Audi
1 BMW
2 Mazda
我现在的 one-hot 编码是这样的:
new = pd.get_dummies(old)
然后回来:
car_Audi car_BMW car_Mazda
0 1 0 0
1 0 1 0
2 0 0 1
这一切都很好。但是,如果我在测试中遇到如下所示的一行:
car
0 Mercedes
我可以一次性编码,但我最终会得到一个我在测试中没有的列。
Pandas 中有没有一种方法可以忽略我在训练中没有看到的测试值?
所以我的梅赛德斯行的期望输出是:
car_Audi car_BMW car_Mazda
0 0 0 0
谢谢!
【问题讨论】: