Ori*_*eto 10 python scipy k-means
我一直在使用scipy的k-means已经有一段时间了,我对它在可用性和效率方面的工作方式感到非常高兴.但是,现在我想探索不同的k-means变体,更具体地说,我想在我的一些问题中应用球形k-means.
你知道球形k均值的任何好的Python实现(即类似于scipy的k-means)吗?如果不是,修改scipy的源代码以使其k-means算法适应球形有多难?
谢谢.
改变k-means(到余弦)中的距离函数是不够的,因为在球形k-均值中,你的目的是保证中心也在球体上.
具体而言,应在每个最大化步骤后对中心进行标准化.实际上,当中心和数据点都被归一化时,余弦对和欧几里德对之间存在一对一的关系.
|a - b|_2 = 2 * (1 - cos(a,b))
Run Code Online (Sandbox Code Playgroud)
有一个新的包,clara-labs/spherecluster 可以将scikit转换k-means为spherical k-means并且还提供另一种球体聚类算法.
看起来球形 k 均值的显着特征是使用余弦距离,而不是标准的欧几里得度量。话虽如此,在另一个答案中,有一个很好的纯 numpy/scipy 适应:
是否可以使用 Scikits.Learn K-Means Clustering 指定您自己的距离函数?
如果这不能满足您的需求,您可能想尝试一下sklearn.cluster。
| 归档时间: |
|
| 查看次数: |
8030 次 |
| 最近记录: |