[英]The K-Means++ Algorithm - Explain the Choice of the Next Cluster Center
就像圖片一樣,為什么不只選擇點2作為聚類的第二個點呢?而是去生成一個隨機數bettwen [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)進行比較?
因為對於行為分析,更容易理解在處理概率驅動的選擇時發生的情況。
憑直覺,您不想選擇最遠的點,因為它可能是異常值。
您想選擇一個點,該點可能是很遠的質量的一部分。
為此,選擇PDF的效果很好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.