1. kmeans算法简介
待补充
2. python实现
2.1 基础版
kmeans算法,前几天的一道面试在线编程题目。好久不用python手法都生疏了,写的很慢。不过后来对比了下网络上的其他kmeans的python实现,感觉自己的实现相对简洁美观,代码量少。这主要依赖于numpy包的使用。
废话少说,直接上代码.
对于输入数据的说明
data是一个\(n*m\)的数组,\(data\in R^{n*m}\),\(n\)是训练数据的样本个数,\(m\)是feature的维数,\(k\)是设定好的聚类数
import numpy as np
def kmeans(data, n, m, k):
rarray = np.random.random(size=k)
rarray = np.floor(rarray*n)
rarray.astype(int)
end = True
cls = np.zeros([1,n],np.int)
center = np.take(data,rarray)
pcenter = np.zeros([k,m])
while end:
for i in xrange(n):
tmp = data[i] - center
tmp = np.square(tmp)
tmp = np.sum(tmp,axis=1)
cls[i] = np.argmin(tmp)
center = np.zeros([k,m])
count