我有一个数据集,该数据集包含训练集中的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次。
以这种方式创建虚拟变量是正确的,以避免训练我们的测试集中未包含的不必要的虚拟特征?如果是,执行此操作的有效代码是什么?
您是否认为有更好的方法来提取具有多个单元格值的列中的伪特征,发生率极低,从而正确地应用机器学习算法?
预先感谢您的帮助!