k均值算法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了k均值算法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1847字,纯文字阅读大概需要3分钟。
内容图文
import matplotlib.pyplot as plt import numpy as np import time from django.template.defaultfilters import center def loadDataSet(fileName): dataMat=[] fr=open(fileName) for line in fr.readlines(): curLine=line.strip().split(‘\t‘) fltLine=map(float,curLine) dataMat.append([i for i in fltLine]) return dataMat def distEclud(vecA,vecB): return np.sqrt(np.sum(np.power(vecA-vecB,2))) def randCent(dataSet,k): n=np.shape(dataSet)[1] centroids=np.mat(np.zeros((k,n))) for j in range(n): minJ=min(dataSet[:,j]) rangeJ=float(max(dataSet[:,j])-minJ) centroids[:,j]=minJ+rangeJ*np.random.rand(k,1) return centroids def kMeans(dataSet,k): m=np.shape(dataSet)[0] clusterAssment=np.mat(np.zeros((m,2))) centroids=randCent(dataSet, k) clusterChanged=True while clusterChanged: clusterChanged=False for i in range(m): minDist=np.inf minIndex=-1 for j in range(k): distJI=distEclud(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): ptsInClust=dataSet[np.nonzero(clusterAssment[:,0].A == cent)[0]] centroids[cent,:]=np.mean(ptsInClust, axis=0) return centroids,clusterAssment def showImage(dataSet,center,label): c=[‘r‘,‘g‘,‘w‘,‘b‘] n=np.shape(dataSet)[0] for i in range(4): x=[],y=[] for j in range(n): if label[j]==i: x.append(dataSet[j,0]) y.append(dataSet[j,1]) plt.scatter(x,y,s=40,c=c[i]) center=center.A plt.scatter(center[:,0],center[:,1],c=‘m‘,marker=‘p‘,s=200) plt.show() if__name__ == ‘__main__‘: startTime=time.clock() dataSet=loadDataSet("testSet.txt") dataSet=np.array(dataSet) print(dataSet) center,cluster=kMeans(dataSet, 4) print(center) endTime=time.clock() print(endTime-startTime) showImage(dataSet, center, cluster[:,0])
原文:http://www.cnblogs.com/sklww/p/3737003.html
内容总结
以上是互联网集市为您收集整理的k均值算法全部内容,希望文章能够帮你解决k均值算法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。
来源:【匿名】