我有一个大的分类值超过1600类的数据框架。我有没有办法找到替代方案,这样我就不会有超过1600列?
我发现这个有趣的链接。
但他们正在转换为类/对象,我不想要。我希望我的最后输出作为一个数据框架,这样我就可以用不同的机器学习模型进行测试了?或者,我是否可以使用生成的矩阵来训练除Logistic回归或XGBoost以外的其他机器学习模型?
不管怎样,我可以实现它吗?
发布于 2017-11-14 17:33:46
一种选择是将稀有值映射到“other”。这通常是在自然语言处理中完成的--直觉是非常罕见的标签不具有很强的统计能力。
我还看到人们将1-热范畴值映射到低维向量,其中每个1-热向量被重新表示为多变量高斯的抽签。例如,参见“深度知识跟踪”一文,其中指出,这种方法的动机是压缩感知的思想:
BARANIUK,R.压缩感应。IEEE信号处理杂志24,4 (2007)。
具体来说,他们将每一个长度为N的向量映射到长度较短的log2(N)向量。我自己还没有做过这件事,但我认为值得一试。
发布于 2017-12-14 20:41:41
您可以读取数据,并首先获得分类变量的所有唯一值的列表。然后,您可以在唯一值列表中安装一个热编码器对象(如sklearn.preprocessing.CategoricalEncoder)。
此方法还可以在火车测试框架中或当您以块读取数据时提供帮助。我已经创建了一个python模块,它可以自己完成所有这些工作。您可以在这个GitHub存储库- dummyPy中找到它。
关于这个- 如何在Python中编码一个热分类变量?的一个简短的教程
https://datascience.stackexchange.com/questions/24729
复制相似问题