就像图片一样,为什么不选择点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进行比较(图中的cumaltive probablity是Sum)?
答案 0 :(得分:1)
因为在分析行为时,更容易理解在处理概率驱动选择时会发生什么。
直观地说,你不想选择最远点,因为它可能是异常值。
你想选择一个可能是相当远的质量的一部分的点
为此目的,使用PDF进行选择效果很好。