如何处理 K-means 中的分类特征?

数据挖掘 机器学习 聚类 k-均值 python-3.x
2022-03-13 05:08:49

我正在研究聚类算法。我正在使用泰坦尼克号数据集。它包含 6 个分类特征。我在这个数据集上使用了 k-means 算法。我正在为分类特征使用标签编码。但我发现分类特征应该使用欧几里得距离。它应该使用汉明距离那么,如何让 k-means 在混合特征上很好地工作呢?我不需要其他算法。我只想在混合特征数据集上使用 k-means。

4个回答

如果类别的性质不是有序的,则标签编码不是一个好主意(它实际上不是我最喜欢的)。使用 one-hot 编码,看看它是如何工作的。您可以在其之上应用特征提取,例如 PCA,以减少来自稀疏性的噪声。另一个想法是按类别在特征中的分数来标记类别,例如:

[a,b,b,c,a,a] --> [3/6, 2/6, 2/6, 1/6, 3/6, 3/6]

对数据进行编码的最佳方法是通过任何编码机制,如标签编码器等。但在处理分类变量之前,请使用特征选择方法(如使用 selectKbest 的卡方检验)检查分类变量与目标变量的相关性。

association您可以使用交叉熵之类的方法来量化分类变量之间的相关性,或者更准确地说,量化相关性。有一个可用的库dython来计算此类关联值。我也很好奇你为什么要做集群?你的预期输出是什么?

我认为 k-prototype 算法是您正在寻找的。

https://link.springer.com/article/10.1023/A:1009769707641