我计划将数据用于包含二进制值 BUY/SELL 的列的聚类问题。
我是否应该转换此属性并为其分配二进制值(BUY=1,SELL=0),并将其保留在同一列上,从而减少数字维度
或者
对属性进行热编码(添加两列 BUY 和 SELL 并将 1 放在相应的列上)?
这两种名义到数值转换的方法如何影响流行聚类算法的最终模型(K均值,分层等......)
我计划将数据用于包含二进制值 BUY/SELL 的列的聚类问题。
我是否应该转换此属性并为其分配二进制值(BUY=1,SELL=0),并将其保留在同一列上,从而减少数字维度
或者
对属性进行热编码(添加两列 BUY 和 SELL 并将 1 放在相应的列上)?
这两种名义到数值转换的方法如何影响流行聚类算法的最终模型(K均值,分层等......)
你的情况差别不大。差异仅在 1 个维度上,影响不大。我可以补充的唯一一点是,如果 BUY 和 SELL 值的数量不同,您可以将它们替换为它们的频率,即如果 40% BUY 和 60% SELL,则将 BUY 替换为 0.4 并将 SELL 替换为 0.6
如果一个值比另一个值具有更高的优先级,那么您可以使用二进制编码。ex) 如果值基于教育水平,您可以将 0 分配给学校教育水平,将 1 分配给大学水平教育。
如果这些值没有任何算术依赖性,那么您需要进行 one-hot 编码。
在您的情况下,热编码更好。
编辑:如果我们只有两个值,二进制编码或热编码都可以。此编辑基于@beamsadept 的评论。