python - Python 中的球形 k-means 实现

标签 python scipy k-means

我一直在使用 scipy's k-means现在已经有一段时间了,我对它在可用性和效率方面的工作方式感到非常满意。但是,现在我想探索不同的 k-means 变体,更具体地说,我想申请 spherical k-means在我的一些问题中。

您知道球形 k 均值的任何良好 Python 实现(即类似于 scipy 的 k 均值)吗?如果不是,修改 scipy 的源代码以使其 k-means 算法适应球形有多难?

谢谢。

最佳答案

在球形 k-means 中,您的目标是保证中心位于球体上,因此您可以调整算法以使用余弦距离,并且还应该对最终结果的质心进行归一化。

当使用欧几里得距离时,我更愿意将算法视为在每次迭代中将聚类中心投影到单位球体上,即,在每个最大化步骤之后应该对中心进行归一化。

确实,当中心和数据点都归一化时,余弦距离和欧氏距离之间存在一对一的关系

|a - b|_2 = 2 * (1 - cos(a,b))

包裹jasonlaska/spherecluster将 scikit-learns 的 k-means 修改为 spherical k-means 并提供另一种球体聚类算法。

关于python - Python 中的球形 k-means 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19226925/

相关文章:

python - 在 Python 3 中解码二维码

python - 快速斐波那契在 1,000,000 点以上缓慢爬行

python - 如何在 Django 模板中处理 Jinja2 中的 for/if 循环

python - 在 Python 中添加交互性?

python - 使用 sklearn 在 3 维上进行 K 均值聚类

cluster-analysis - Doc2Vec 使用 kmeans 对新文档进行聚类

python - 在不使用 Django 本身的情况下测试自定义 Django 中间件

python-3.x - Windows 7 导入 scipy.stats 的错误

scipy - Scipy stats 中的 t 检验是 Welch 的 t 检验

hadoop - hadoop的K均值编译错误…