我需要在我的熊猫数据框架上对分类变量进行一个热编码。
我的数据集非常大,超过2000年的产品is 是一个热编码。
我试过pd.get_dummies,它总是崩溃。
我也尝试了科学工具包-学习的OneHotEncoder,也崩溃了!(它可以很好地处理较小的dataframe子集)
还有什么其他方法吗?对于非常大的数据集来说,对一个热门的分类变量进行编码的最有效的方法是什么?
我的数据框架:
Month User ProductID
1 A ProdA
3 A ProdB
11 A ProdC
12 A ProdD所需产出:
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发布于 2020-04-03 21:28:25
我的数据集非常大,有2000多个产品is和数百万个用户行。
这将产生一个巨大的数据集。大概是因为记忆而崩溃吧。
也许您应该考虑完全一热编码的替代方案。
一种方法是创建顶级类别的假人,其余的创建“其他人”。
tops = df.ProductID.value_counts().head(10)会给你顶级的产品ids。然后你可以用
df.ProductID[~df.ProductID.isin(tops)] = 'other'然后用它来制造假人。
如果您有一个响应变量,则可以选择使用平均编码。
发布于 2020-04-05 07:30:17
对于具有如此多不同可能值的特性,一次热编码可能不是最好的选择。
我建议使用目标编码(https://contrib.scikit-learn.org/categorical-encoding/)。与单一热编码不同,该编码将为特征的k个唯一值创建k列,目标编码将一个特性转换为一个列。
https://stackoverflow.com/questions/61020444
复制相似问题