【发布时间】:2020-07-16 03:04:32
【问题描述】:
我需要在我的 pandas 数据框上对分类变量进行一个热编码。
我的数据集非常大,有 2000 多个产品 ID 进行热编码。
我尝试了 pd.get_dummies,但它总是崩溃。
我也尝试过 scikit-learn 的 OneHotEncoder,它也崩溃了! (它适用于较小的数据帧子集)
还有哪些其他方法?对非常大的数据集进行热编码分类变量的最有效方法是什么?
我的数据框:
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
【问题讨论】:
-
鉴于您的分类数据中的级别数,您可能会查看类似 Catboost 的内容,它旨在处理分类变量而无需编码
-
您是否考虑过使用 keras 或其他一些 ML 库? keras 有一个函数 to_categorical 可能会起作用。
-
@ayhan 我也试过 scikit-learn 的 OneHotEncoder,它也崩溃了! (它适用于较小的数据帧子集)
-
这真是令人惊讶。您的数据框有多少行?你能对整个事情执行基本操作吗? (例如将 +1 映射到数字字段等)。如果您想在计算机集群上并行操作,可以查看koalas。
标签: python pandas machine-learning scikit-learn