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本ずつ取られるかとおもいきやこんなことになった。