【问题标题】:The K-Means++ Algorithm - Explain the Choice of the Next Cluster CenterK-Means++ 算法——解释下一个聚类中心的选择
【发布时间】:2017-12-01 13:06:21
【问题描述】:

如图,为什么不直接选择点2作为聚类的第二个点呢?而是去生成一个[0,1]之间的随机数?

def initialize(X, K):#kmean++
m,n=shape(X)
C = mat(zeros((K,n)))
random_number=random.randint(0,m)
C[0,:]=X[random_number]
for k in range(1, K):
    D2 = scipy.array([min([scipy.inner(c-x,c-x) for c in C]) for x in X])
    probs = D2/D2.sum()
    cumprobs = probs.cumsum()
    r = scipy.rand()
    for j,p in enumerate(cumprobs):
        if r < p:
            i = j
            break
    C[k,:]=X[i]
return C

为什么要生成r来和p比较(图中的累积概率是Sum)?

【问题讨论】:

    标签: machine-learning k-means spherical-kmeans


    【解决方案1】:

    因为对于行为分析,在处理概率驱动选择时更容易理解发生了什么。

    直观地说,您不想选择最远的点,因为它可能是异常值。
    您想选择一个可能是相当远的质量的一部分的点。
    为此,使用 PDF 进行选择效果很好。

    【讨论】:

      猜你喜欢
      • 2011-10-15
      • 2019-11-25
      • 2016-01-01
      • 2021-11-18
      • 2015-06-04
      • 2021-08-06
      • 2020-02-21
      • 1970-01-01
      • 2016-06-27
      相关资源
      最近更新 更多