Pandas:处理测试中看不见的数据

2024-07-04

我有一个训练数据集,正在构建一些机器学习模型。我无权访问测试集,并且想要处理在训练中未观察到测试中的分类特征之一的可能性。

这是一个玩具示例,说明了我的意思:

我有一个数据框,old, 像这样:

old = pd.DataFrame({"car":["Audi", "BMW", "Mazda"]})

看起来像这样:

    car
0   Audi
1   BMW
2   Mazda

我现在像这样进行一次性编码:

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

Thanks!


您可以使用reindex为了达成这个

old = pd.DataFrame({"car":["Audi", "BMW", "Mazda"]})
new = pd.get_dummies(old)
test= pd.DataFrame({"car":["Audi", "BMW", "Mazda","Mercedes"]})
pd.get_dummies(test).reindex(columns=new.columns)
Out[460]: 
   car_Audi  car_BMW  car_Mazda
0         1        0          0
1         0        1          0
2         0        0          1
3         0        0          0 # row 3 will be all 0 after modified 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pandas:处理测试中看不见的数据 的相关文章

随机推荐