将 K 平均聚类距离度量更改为堪培拉距离或 python 上的任何其他距离度量
Posted
技术标签:
【中文标题】将 K 平均聚类距离度量更改为堪培拉距离或 python 上的任何其他距离度量【英文标题】:Changing K mean clustering distance metric to canberra distance or any other distance metric on python 【发布时间】:2020-04-20 14:31:17 【问题描述】:如何将 k 均值聚类的距离度量更改为堪培拉距离或任何其他距离度量?据我了解,sklearn 只支持欧几里得距离,而 nltk 似乎不支持堪培拉距离,但我可能错了。谢谢!
【问题讨论】:
看看这个stats.stackexchange.com/questions/81481/… 【参考方案1】:from scipy.spatial import distance
from nltk.cluster.kmeans import KMeansClusterer
obj = KMeansCluster(num_cluster, distance = distance.canberra)
【讨论】:
可能 (A) 无法收敛 - k 均值 仅 最小化平方和,而不是距离,并且 (B) 性能会很慢。 @Anony-Mousse -Reinstate Monica 那我应该如何处理它?目前代码还在运行很长时间... @qaiser 它是一个尝试各种距离度量的项目,而且数据集有很多特征,30 到 60 个特征 有兴趣的可以参考这篇论文,当然我不是作者,但是在做类似journals.plos.org/plosone/article/file?id=10.1371/… 不能推荐 PLOS 论文。它的质量相当差。给出的一些复杂性是错误的 - 不要向复杂性理论的人表明这一点。他们显然存在许多距离应该总是产生相同结果但没有的数值问题;当然,他们不应该使用一些带有 k-means 的度量,所以难怪 k-medoids 通常效果更好......以上是关于将 K 平均聚类距离度量更改为堪培拉距离或 python 上的任何其他距离度量的主要内容,如果未能解决你的问题,请参考以下文章