numpyでk-means法を実装した
NumPyすごいな。学習部分は実質2行だ。
# E-step nearest_cluster = array([argmin([norm(x - mu) for mu in mus]) for x in data]) # M-step mus = [average(data[nearest_cluster == k], axis=0) for k in range(K)]
「パターン認識と機械学習」(PRML)読書会 #11 + R で K-means - Mi manca qualche giovedi`?
# K-means の1ステップ (mu <- t(sapply(1:K,function(k)colMeans(xx[max.col(-sapply(1:K,function(i)apply(xx,1,function(x)sum((mu[i,]-x)^2))))==k,]))));
むむっ
mu = [average(xx[array([argmin([norm(x - m) for m in mu]) for x in xx]) == k], axis=0) for k in range(K)]
よし。(何)
クラスタ数を増やしたら枝が1本ずつ取られるかとおもいきやこんなことになった。