处理具有多个值的特征以进行聚类

数据挖掘 聚类 分类数据
2022-03-15 16:46:34

假设我在熊猫中有一个电影数据框。其中一项功能是流派。

它有一个流派名称列表。例如:

Movie_ID    Genre

1        [Action, Thriller, Drama]
2        [Romance, Comedy]
3        [Action, Romance]

如何将此列用于聚类问题,例如 K 均值聚类?

2个回答

您可以轻松地在 Pandas 中使用get_dummy 函数将它们转换为数值向量。

这个想法是分类变量没有数值直觉,例如当涉及到距离的定义时。但试想一下,您有一个具有喜剧浪漫犯罪3 个值的特征类型然后,您可以通过说Comedy = (1,0,0)Crime = (0,1,0)Romance = (0,0,1)在 3 维空间中对它们进行建模它将 1 个功能替换为三个,但直观上效果很好。

更新

我只是在编辑后才理解你的问题!之前有点模糊。但是我保留了最初的答案并添加了更新。

在这种情况下,使用特征流派的值(该列中所有流派集合的唯一值)作为新特征,否则用 1 和 0 确定它们的存在。应该管用。

Movie_ID    Action  Thriller  Drama  Romance  Comedy

1             1       1         1       0       0
2             0       0         0       1       1
3             1       0         0       1       0

K-means 对此类数据的效果非常糟糕,因为该方法旨在处理连续值,其中需要优化平方误差。

与其试图找到与您的“钉子”相匹配的锤子,您首先需要了解您的“钉子”,因为它可能是一个螺丝钉!那么的目标是什么,答案结果是什么,什么时候结果好?只有这样你才能找到优化这个问题的算法。如果您只是尝试随机算法,将您的数据强制转换为不保留相关属性的不自然形式,这是浪费时间。他们实际上将解决一个不同的问题。