首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个大范畴值的热编码替代方案

一个大范畴值的热编码替代方案
EN

Data Science用户
提问于 2017-11-14 17:20:58
回答 4查看 27.4K关注 0票数 18

我有一个大的分类值超过1600类的数据框架。我有没有办法找到替代方案,这样我就不会有超过1600列?

我发现这个有趣的链接

但他们正在转换为类/对象,我不想要。我希望我的最后输出作为一个数据框架,这样我就可以用不同的机器学习模型进行测试了?或者,我是否可以使用生成的矩阵来训练除Logistic回归或XGBoost以外的其他机器学习模型?

不管怎样,我可以实现它吗?

EN

回答 4

Data Science用户

回答已采纳

发布于 2017-11-14 17:33:46

一种选择是将稀有值映射到“other”。这通常是在自然语言处理中完成的--直觉是非常罕见的标签不具有很强的统计能力。

我还看到人们将1-热范畴值映射到低维向量,其中每个1-热向量被重新表示为多变量高斯的抽签。例如,参见“深度知识跟踪”一文,其中指出,这种方法的动机是压缩感知的思想:

BARANIUK,R.压缩感应。IEEE信号处理杂志24,4 (2007)。

具体来说,他们将每一个长度为N的向量映射到长度较短的log2(N)向量。我自己还没有做过这件事,但我认为值得一试。

票数 14
EN

Data Science用户

发布于 2017-12-14 20:41:41

您可以读取数据,并首先获得分类变量的所有唯一值的列表。然后,您可以在唯一值列表中安装一个热编码器对象(如sklearn.preprocessing.CategoricalEncoder)。

此方法还可以在火车测试框架中或当您以块读取数据时提供帮助。我已经创建了一个python模块,它可以自己完成所有这些工作。您可以在这个GitHub存储库- dummyPy中找到它。

关于这个- 如何在Python中编码一个热分类变量?的一个简短的教程

票数 2
EN

Data Science用户

发布于 2019-11-30 12:59:44

请参阅此链接 (这也与具有相当多唯一值的分类特性相关):

对于嵌入,您可以参考此链接 (不是由我编写的,而是值得阅读一次)。

票数 1
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/24729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档