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

Tej*_*eja 2 cluster-analysis distance data-mining k-means

我试图在下面的data-set上实现K-means算法.它是stragiht-forward来计算任何两个数字属性之间的距离,但是我如何计算两个字符串之间的距离以及如何总结所有距离(即字符串属性之间的距离和数字属性之间的距离.)请告诉我.谢谢.

Ano*_*sse 6

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

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

从技术上讲,k-means甚至不是基于欧几里德距离,而是最小化方差,这恰好与欧氏距离的平方相同; 如果你最小化这些方格,你也可以最小化欧几里德距离.但算法真正旨在最小化的是Var(Attribute 1, Cluster 1) + Var(Attribute 2, Cluster 1) + ... + Var(Attribute n, Cluster k).

你可能想要研究k-medians,它们通过使用medoid代替均值,避免了能够计算均值的需要,并且就我所知,可以为任意距离提供收敛保证.

但是,您可能希望研究真正的基于距离的算法,包括通常也基于距离的各种基于密度的聚类算法.