前面几篇讲了机器学习中的分类,今天讲一下聚类算法–kmeans,聚类通俗地说就是将一堆数据分成几堆,属性相似的在一起(物以类聚人以群分)。
kmeans的原理十分简单,直接上步骤:
- 我们假定将数据分成k堆,先从数据里面随机选k个点作为初始质心
- 依次计算剩下的数据距每个质心的距离,为每个点选取距离最小的质心
- 这就完成了一次聚类,但是效果肯定不是很好,我们针对每个堆再计算质心,得到k个新的质心
- 再对所有的数据计算距每个新的质心的距离,再为每个点选取新的距离最小的质心
- 不停的循环这个过程,直到质心不再改变为止
from numpy import *
def loadDataSet(filename):
dataMat=[]
fr=open(filename)
for line in fr.readlines():
curline=line.strip().split('\t')
fltline=map(float,curline)
dataMat.append(list(fltline))
return dataMat