使用Pycluster包进行聚类分析实例.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
使用Pycluster包进行聚类分析实例Esri 中国卢萌?????????“方以类聚,物以群分,吉凶生矣“——周易·系辞上人类在几千年前就认识到了所谓的聚类和分类,是用来认知和描述万事万物之间关系的主要方法。一个没读什么书小贩,也知道将不同色泽和品相的水果分开,可以卖不同的价格。所以不论是否受过高等教育,聚类和分类的思想都根深蒂固的在人类的思想中。?聚类是数据挖掘的主要手段之一,对于探索数据之间的规律有着重要的作用。但是很多想做数据分析的同学限于没有时间去写各种算法,只能停留在算法描述上面。?所以这里给大家介绍一个很好很强大的开源包:Pycluster包。?Pycluster包是东京大学医学研究所,人类基因研究中心的米歇尔德勋(Michiel de Hoon),星矢井本(Seiya Imoto),宫野悟(Satoru Miyano)等人编写的开源算法工具包,提供了C/C++、python和 Perl三个版本,因为本人主要玩的python,所以这里主要讲其中的Pycluster包,其他的内容,可以下载详细文档(本文中的代码、数据和文档,在最下面的链结中有,我放的是百度云盘)。?Pycluster封装了基于划分的算法中的两个最经典的算法K-means和k-medoids,以及基于层次的算法,主要还是说了k-means和k-medoids算法,算法的实行描述我就不详细说了,网上资料大把多。下面解析一下整个包实现的代码以及各种参数说明:其中斜体是我写的注释。# -*- coding:utf-8 -*-Created on 2015-6-3?@author: godxiaimport Pycluster as pcimport numpy as npimport matplotlib.pylab as pl?def myCKDemo(filename,n):????#以下两个语句是获取数据,用于聚类分析的数据位于第3和第4列(从0开始计算)?????? data = np.loadtxt(filename, delimiter = , ,usecols=(3,4))??? #第8和第9列,保存了城市的经纬度坐标,用于最后画散点图??? xy = np.loadtxt(filename, delimiter = , ,usecols=(8,9))????#clustermap是聚类之后的集合,记录每一组数据的类别id??? clustermap = pc.kcluster(data, n)[0]????#centroids 是分组聚类之后的聚类中心坐标??? centroids = pc.clustercentroids(data, clusterid=clustermap)[0]????#m是距离矩阵??? m = pc.distancematrix(data)?????#mass 用来记录各类的点的数目??? mass = np.zeros(n)??? for c in clustermap:???????? mass[c] += 1???????????#sil是轮廓系统矩阵,用于记录每个簇的大小??? sil = np.zeros(n*len(data))???? sil.shape = ( len(data), n )??????? for i in range( 0, len(data) ):???????? for j in range( i+1, len(data) ):???????????? d = m[j][i]???????????? sil[i, clustermap[j] ] += d???????????? sil[j, clustermap[i] ] += d????? for i in range(0,len(data)):???????? sil[i,:] /= mass????????#s轮廓系数是一个用来评估聚类效果的参数??? #值在-1 —— 1之间,值越大,表示效果越好。??? #小于0,说明与其簇内元素的平均距离小于最近的其他簇,表示聚类效果不好。??? #趋近与1,说明聚类效果比较好。??? s=0???? for i in range( 0, len(data) ):???????? c = clustermap[i]???????? a = sil[i,c]???????? b = min(sil[i,range(0,c)+range(c+1,n)])???????? si = (b-a)/max(b,a)??????? s+=si??????? print n, s/len(data)????????#使用matplotlib画出散点图。??? fig, ax = pl.subpl

文档评论(0)

535600147 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:6010104234000003

1亿VIP精品文档

相关文档