【发布时间】: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