相关疑难解决方法(0)

计算k均值的方差百分比?

维基百科页面上,描述了用于确定k均值中的聚类数量的肘方法.scipy的内置方法提供了一个实现,但我不确定我是否理解它们所称的失真是如何计算的.

更确切地说,如果您绘制由集群解释的方差百分比与集群数量的关系图,则第一个集群将添加大量信息(解释大量方差),但在某些时候边际增益将下降,从而给出一个角度.图形.

假设我的相关质心有以下几点,那么计算这个量度的好方法是什么?

points = numpy.array([[ 0,  0],
       [ 0,  1],
       [ 0, -1],
       [ 1,  0],
       [-1,  0],
       [ 9,  9],
       [ 9, 10],
       [ 9,  8],
       [10,  9],
       [10,  8]])

kmeans(pp,2)
(array([[9, 8],
   [0, 0]]), 0.9414213562373096)
Run Code Online (Sandbox Code Playgroud)

我特别考虑计算0.94 ..测量给出的点和质心.我不确定是否可以使用任何内置的scipy方法,或者我必须编写自己的方法.关于如何有效地为大量积分做这些的任何建议?

简而言之,我的问题(所有相关的)如下:

  • 给定距离矩阵和哪个点属于哪个聚类的映射,计算可用于绘制肘图的度量的好方法是什么?
  • 如果使用不同的距离函数(如余弦相似度),方法会如何变化?

编辑2:失真

from scipy.spatial.distance import cdist
D = cdist(points, centroids, 'euclidean')
sum(numpy.min(D, axis=1))
Run Code Online (Sandbox Code Playgroud)

第一组点的输出是准确的.但是,当我尝试不同的设置时:

>>> pp = numpy.array([[1,2], [2,1], [2,2], [1,3], [6,7], [6,5], [7,8], [8,8]])
>>> kmeans(pp, 2)
(array([[6, 7],
       [1, 2]]), 1.1330618877807475)
>>> …
Run Code Online (Sandbox Code Playgroud)

python statistics numpy cluster-analysis k-means

35
推荐指数
2
解决办法
4万
查看次数

标签 统计

cluster-analysis ×1

k-means ×1

numpy ×1

python ×1

statistics ×1