如何从类别很多的列中使用熊猫正确创建虚拟变量?

时间:2019-04-18 00:10:04

标签: python pandas machine-learning dummy-variable

我有一个数据集,该数据集包含训练集中的5000+行和测试集中的4000行。在这些列之一中,我每个单元格都有多个值,并用逗号分隔,问题是当我想在整个数据集(训练和测试串联)上将虚拟变量应用于此列时,需要花费大量时间,因为大多数值只会出现几次,所以会创建大量的虚拟特征。我有:

我的代码是:

stars_dummies = train_and_test["stars"].str.get_dummies(sep=',')

但是创建的特征数量太可笑了,甚至花更多的时间了。

“星标”列中我的测试集的前5行是:

Rob Corddry,Craig Robinson,Clark Duke
安妮·海瑟薇,卡勒姆·蓝,朱莉·安德鲁斯
迈尔斯·泰勒西蒙斯(Melissa Benoit),
Vidya Balan,Parambrata Chatterjee,Indrana Sanchez
金江雨,赵在贤,施妍苑

这是我的问题:

  • 是否存在仅根据相关值创建虚拟变量的有效方法?我当时想只为测试集上的值提供虚拟变量,而这些变量在训练集上也要超过2次。

  • 以这种方式创建虚拟变量是正确的,以避免训练我们的测试集中未包含的不必要的虚拟特征?如果是,执行此操作的有效代码是什么?

  • 您是否认为有更好的方法来提取具有多个单元格值的列中的伪特征,发生率极低,从而正确地应用机器学习算法?

预先感谢您的帮助!

0 个答案:

没有答案