let*_*ado 7 machine-learning ordinal categorical-data dummy-variable one-hot-encoding
如果我们不确定分类特征的性质,例如它们是名义特征还是序数特征,我们应该使用哪种编码?序数编码还是单热编码?关于这个主题有明确的规则吗?
我看到很多人在没有方向的分类数据上使用序数编码。假设有一个频数表:
some_data[some_col].value_counts()
[OUTPUT]
color_white 11413
color_green 4544
color_black 1419
color_orang 3
Name: shirt_colors, dtype: int64
Run Code Online (Sandbox Code Playgroud)
有很多人更喜欢在本专栏上进行序数编码。我一心一意地选择 One-Hot-Encoding。我对此的看法是进行序数编码将为这些颜色分配一些有序数字,我暗示了一个排名。而且一开始就没有排名。换句话说,我的模型不应将 color_white 视为 4,将 color_orang 视为 0、1 或 2。请记住,数据描述中也没有任何排名或顺序的提示。
我对这个话题有如下的理解:
既没有方向也没有大小的数字是名义变量。例如,fruit_list =['苹果', '橙子', 香蕉']。除非有特定的上下文,否则该集合将被称为名义集合。对于此类变量,我们应该执行 get_dummies 或 one-hot-encoding
而序数变量有一个方向。例如,shirt_sizes_list = [大、中、小]。这些变量称为序数变量。如果同一个水果列表背后有上下文,例如价格或营养价值,即可以为 Fruit_list 中的水果提供某种排名或顺序,我们将其称为序数变量。对于序数变量,我们执行序数编码
我的理解正确吗?请提供您的反馈 这个主题已经变成了一场噩梦 谢谢!
选择时只需要考虑一件事OrdinalEncoder,或者数据的顺序重要OneHotEncoder吗?
大多数机器学习算法会假设两个附近的值比两个遥远的值更相似。在某些情况下这可能没问题,例如对于有序类别,例如:
quality = ["bad", "average", "good", "excellent"]或者shirt_size = ["large", "medium", "small"]但显然情况并非如此:
color = ["white","orange","black","green"]列(除了您需要考虑频谱的情况,例如从白色到黑色。请注意,在这种情况下,white类别应编码0为black类别中的最高数字),或者如果您有某些情况例如,类别 0 和 4 可能比类别 0 和 1 更相似。要解决此问题,一种常见的解决方案是为每个类别创建一个二进制属性(One-Hot 编码)
| 归档时间: |
|
| 查看次数: |
6942 次 |
| 最近记录: |