将 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 上的任何其他距离度量的主要内容,如果未能解决你的问题,请参考以下文章

如何在 R 中为 kmeans 指定距离度量?

覆盖聚类算法中的距离度量

机器学习聚类算法中的距离度量有哪些及公式表示?

机器学习 - 算法 - 聚类 K-MEANS 算法

python k-Means聚类非常可定制(参数设置)。此外,可以在不同距离度量之间进行选择。

聚类算法——KMEANS算法