我一直在使用scipy 的 k 均值 http://docs.scipy.org/doc/scipy/reference/cluster.vq.html已经有一段时间了,我对它在可用性和效率方面的工作方式感到非常满意。然而,现在我想探索不同的 k 均值变体,更具体地说,我想应用球形 k 均值 http://www.jstatsoft.org/v50/i10/paper在我的一些问题中。
你知道球形 k 均值有什么好的 Python 实现(即类似于 scipy 的 k 均值)吗?如果不是,修改 scipy 的源代码以使其 k 均值算法适应球形有多难?
谢谢。
在球形 k 均值中,您的目标是保证中心位于球体上,因此您可以调整算法以使用余弦距离,并且还应该对最终结果的质心进行归一化。
当使用欧几里德距离时,我更喜欢将该算法视为在每次迭代中将聚类中心投影到单位球体上,即,应该在每个最大化步骤之后对中心进行归一化。
事实上,当中心和数据点都归一化时,余弦距离和欧氏距离之间存在 1 对 1 的关系
|a - b|_2 = 2 * (1 - cos(a,b))
套餐jasonlaska/spherecluster https://github.com/jasonlaska/spherecluster修改 scikit-learns 的k-means
into spherical k-means
并且还提供了另一种球体聚类算法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)