data-mining - 如何在字符串数据上实现k-means算法

标签 data-mining cluster-analysis distance k-means

我正在尝试在下面的数据集上实现 K-means 算法。它是直接计算任意两个数字属性之间的距离,但如何计算两个字符串之间的距离以及如何总结所有距离(即字符串属性之间的距离和数字属性之间的距离。)请告诉我。谢谢。

最佳答案

K-means 是为欧几里德距离而设计的。您不能只插入任意其他距离函数。这可能会导致 k-means 不再收敛。

所需的属性是均值必须最小化方差。如果你不能保证这个属性(字符串的意思到底是什么?),那么你就失去了保证的收敛性。

从技术上讲,k-means 甚至不基于欧几里德距离,但它最大限度地减少了方差,而方差恰好与平方欧几里德距离相同;如果你最小化这些正方形,你也会最小化欧几里德距离。但该算法真正旨在最小化的是 Var(Attribute 1, Cluster 1) + Var(Attribute 2, Cluster 1) + ... + Var(Attribute n, Cluster k)

您可能想研究 k 中位数,它通过使用中心点而不是均值,避免了计算均值的需要,并且据我所知可以为任意距离提供收敛保证。

但是,您可能想要研究真正基于距离的算法,包括各种基于密度的聚类算法,这些算法通常也是基于距离的。

关于data-mining - 如何在字符串数据上实现k-means算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13518701/

相关文章:

cluster-analysis - 关于余弦相似度的一些问题

C、如何在字符串中找到2个重复的单词并计算它们之间的距离

machine-learning - 为什么 F 测量是调和平均值,而不是精确度和召回率测量的算术平均值?

machine-learning - 降维如何用于文档分类

machine-learning - 哪些FFT描述符应用作实现分类或聚类算法的功能?

algorithm - 给定欧几里德距离范围的分区邻居点

algorithm - k 最近邻分类器训练每个类的样本大小

python - 对现有项目列表进行排序以比较聚类解决方案

matlab - Matlab 中两点之间的距离

javascript - 矩阵,距离,javascript