首页 > 解决方案 > `pd.Categorical(content).codes` VS `pd.get_dummies()` 或 `onehotencoder`

问题描述

我有一些疑问,据我所知,我们必须始终对分类列进行编码,以使我们的 ML 算法有效。

大多数时候我pd.get_dummies(column, drop_first=True)用来避免多重共线性。

onehotencoder()

但是我在一个包含许多分类列的相当大的数据集中进行练习,在完成之后pd.get_dummies(column, drop_first=True),我总共得到了 7000 多列和一个 7GB 大小的 csv 文件。当我使用 ML 算法来拟合训练集时,我的 google colab 崩溃了。

我看到还有其他编码选择/方法,例如pd.Categorical(content).codes,它不会创建二进制列,但它会为分类列中的唯一标签分配唯一编号。例如汽车:所有红色将被分配 1,蓝色将被分配 2,绿色 .. 等等。

哪个更好用?

它会产生任何问题吗?像多重共线性或完美预测?

标签: pythonpandasdataframeencodingdata-science

解决方案


推荐阅读