机器学习实战--kmeans实例讲解
来源:互联网 发布:mysql nvl 编辑:程序博客网 时间:2024/06/01 16:42
前面几篇讲了机器学习中的分类,今天讲一下聚类算法–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 dataMatdef disEclud(vecA,vecB): return sqrt(sum(pow(vecA-vecB,2)))def randCent(dataSet,k): n=shape(dataSet)[1] centroids=mat(zeros((k,n))) for j in range(n): L=[x[j] for x in dataSet] minJ=min(L) maxJ=max(L) rangeJ=float(maxJ-minJ) centroids[:,j]=minJ+rangeJ*random.rand(k,1) return centroidsdataMat=loadDataSet("data/datingTestSet2.txt")centroids=randCent(dataMat,4)def kMeans(dataSet,k,distMeas=disEclud,createCent=randCent): m=shape(dataSet)[0] clusterAssment=mat(zeros((m,2))) centroids=createCent(dataSet,k) clusterChanged=True while clusterChanged: clusterChanged=False for i in range(m): minDist=inf minIndex=-1 for j in range(k): distJI=distMeas(array(centroids[j]),dataSet[i]) if distJI<minDist: minDist=distJI minIndex=j if clusterAssment[i,0]!=minIndex: clusterChanged=True clusterAssment[i,:]=minIndex,minDist**2 for cent in range(k): L=[] for temp in range(m): if clusterAssment[temp,0]==cent: L.append(dataSet[temp]) print(type(L)) centroids[cent,:]=mean(L,axis=0) return centroids,clusterAssmentcentroids,clusterAssment=kMeans(dataMat,5)print(centroids)
阅读全文
0 0
- 机器学习实战--kmeans实例讲解
- 机器学习实战--kMeans
- 机器学习实战 Kmeans
- 机器学习实战之KMeans
- 机器学习实战笔记8(kmeans)
- Scikit-learn机器学习实战之Kmeans
- 机器学习实战学习笔记7——Kmeans
- 机器学习实战之KMeans算法pandas实现
- 机器学习之Kmeans
- 机器学习Kmeans实现
- 机器学习算法-kMeans
- 【机器学习】--Kmeans聚类
- 机器学习实战python实例
- 机器学习实战——决策树讲解
- 机器学习实战:KNN算法讲解
- 机器学习实战之一---简单讲解决策树
- 机器学习:KMeans学习笔记
- Spark机器学习:TF-IDF实例讲解
- python 和 matlab
- 学习 ui-router (一): 管理状态
- 局域网arpsniffer源码剖析
- entity、dto、vo理解
- 统计学生成绩,并存储到磁盘文件中
- 机器学习实战--kmeans实例讲解
- Android 启用线程的方法
- JWT介绍
- PhtoShop 快捷键
- js关闭窗口的几种方法
- Linux下的Android开发-Linux入门篇(一)
- ubuntu 16.04 eclipse not show menu
- SpringMVC
- ECMASript继承