11
import numpy as np x=np.random.randint(0,34,20) y=np.zeros(20) k=3 def initcenter(x,k): return x[0:k].reshape(k) def nearest(kc,i): d=(abs(kc-i)) w=np.where(d==np.min(d)) return w[0][0] def xclassify(x,y,kc): for i in range(x.shape[0]): y[i]=nearest(kc,x[i]) return y def kcmean(x,y,kc,k): l=list(kc) flag=False for c in range(k): m=np.where(y==c) n=np.mean(x[m]) if l[c]!=n: l[c]=nflag=True return(np.array(l),flag) kc=initcenter(x,k) flag=True print(x,y,kc,flag) while flag: y=xclassify(x,y,kc) kc,flag=kcmean(x,y,kc,k) print(y,kc)