python - `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,绿色 .. 等等。
哪个更好用?
它会产生任何问题吗?像多重共线性或完美预测?
解决方案
推荐阅读
- android - 成功构建另一个应用程序后,缓存会导致 Gradle 同步失败吗?
- postgresql - 没有删除表权限的 Postgresql 角色
- sql-server-2008 - 未使用 BEGIN 或 END TRANSACTION 的存储过程中的事务错误
- angular - 在导航到下一条路线之前获得响应
- git - VS2019 如何在读取文件后应用部分存储
- python - 将数据框更改为唯一列上的字典
- php - 当我在后台运行 bash 命令时 exec() 挂起
- sql - 如何在不更改查询的情况下改进此 oracle 11g 计划选择?
- ruby-on-rails - 使用实例变量作为 hidden_field 的值?回报率
- javascript - Rails 6 Webpacker 从 Rails 视图调用 javascript 函数