0

在此处输入图像描述

就像图片一样,为什么不直接选择点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)?

4

1 回答 1

1

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

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

于 2017-07-22T10:23:02.013 回答