Kmeans中的分类数据

数据挖掘 聚类 k-均值
2022-02-26 14:58:13

我需要在给定的数据集中执行聚类。存在具有数值和分类值的属性。

将分类值转换为数值的最佳方法是什么?

例如,一个字段是颜色,值是红色、绿色、蓝色,所以我可以分配如下映射:

红色:1,绿色:2,蓝色:3 或红色:11,绿色:25,蓝色:30

如果我提供这样的映射,这会影响聚类的欧几里得距离吗?

还是有其他方法?

4个回答

将分类数据转换为数值数据并没有真正的意义。不同的映射会给你不同的解决方案。

分类数据的 K-means 算法有一个扩展,称为 k-modes。您可以在此处详细了解 K 模式本文解释了 K-modes 与将数据转换为数值向量然后运行 ​​K-means 之间的区别

我肯定会首先检查这个问题:K-Means clustering for mixed numeric and categorical data

如果它没有帮助,这是我的解释:

如果您有混合数据类型(即数字和分类),您有几个选择:

  • 将数值数据转换为分类数据

您可以通过使用binning来做到这一点。如果要将 K-Means 用于分类数据,可以使用汉明距离而不是欧几里得距离。

  • 将分类数据转化为数值

分类数据可以排序也可以不排序。假设您有“一”、“二”和“三”作为分类数据。当然,您可以将它们转置为 1、2 和 3。

但在大多数情况下,分类数据不能很好地排序。因此,您可以使用one-hot 编码转换为数字数据

  • 使用 K 原型将两者结合起来

K-prototypes 通过结合数值特征之间的欧几里得距离和分类特征之间的汉明距离来计算实例之间的距离。

您不能真正将 k 均值用于分类/名义数据,因为它没有排名。换句话说,你不能说“绿色大于红色”或“绿色小于蓝色”。即使您确实想为它们分配排名(将它们视为序数),您也无法说出它们之间的区别。我建议改用层次聚类或递归分区。

尝试根据您关心的内容对它们进行有效分类。

如果您想忠实于色轮,而不仅仅是使用您正在使用的颜色的 RGB 值。

但是,如果不是,那么您可以使用任何映射,但要小心,因为即使在您对特征进行归一化之后它也会影响您的欧几里得距离(强烈推荐用于 K-means)。