首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫更快的一种热编码方式与pd.get_dummies

熊猫更快的一种热编码方式与pd.get_dummies
EN

Stack Overflow用户
提问于 2020-04-03 21:09:26
回答 2查看 886关注 0票数 1

我需要在我的熊猫数据框架上对分类变量进行一个热编码。

我的数据集非常大,超过2000年的产品is 是一个热编码。

我试过pd.get_dummies,它总是崩溃。

我也尝试了科学工具包-学习的OneHotEncoder,也崩溃了!(它可以很好地处理较小的dataframe子集)

还有什么其他方法吗?对于非常大的数据集来说,对一个热门的分类变量进行编码的最有效的方法是什么?

我的数据框架:

代码语言:javascript
复制
Month   User    ProductID
1       A       ProdA
3       A       ProdB
11      A       ProdC
12      A       ProdD

所需产出:

代码语言:javascript
复制
Month   User    ProdA  ProdB  ProdC  ProdD
1       A       1      0      0      0
3       A       0      1      0      0
11      A       0      0      1      0
12      A       0      0      0      1
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-03 21:28:25

我的数据集非常大,有2000多个产品is和数百万个用户行。

这将产生一个巨大的数据集。大概是因为记忆而崩溃吧。

也许您应该考虑完全一热编码的替代方案。

一种方法是创建顶级类别的假人,其余的创建“其他人”。

代码语言:javascript
复制
tops = df.ProductID.value_counts().head(10)

会给你顶级的产品ids。然后你可以用

代码语言:javascript
复制
df.ProductID[~df.ProductID.isin(tops)] = 'other'

然后用它来制造假人。

如果您有一个响应变量,则可以选择使用平均编码

票数 1
EN

Stack Overflow用户

发布于 2020-04-05 07:30:17

对于具有如此多不同可能值的特性,一次热编码可能不是最好的选择。

我建议使用目标编码(https://contrib.scikit-learn.org/categorical-encoding/)。与单一热编码不同,该编码将为特征的k个唯一值创建k列,目标编码将一个特性转换为一个列。

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

https://stackoverflow.com/questions/61020444

复制
相关文章

相似问题

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