ImageVerifierCode 换一换
格式:DOCX , 页数:7 ,大小:23.87KB ,
资源ID:17763731      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17763731.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(一篇文章透彻解读聚类分析及案例实操Word下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

一篇文章透彻解读聚类分析及案例实操Word下载.docx

1、许多算法是针对基于区间的数值属性而设计的,但是 有些应用需要针对其它数据类型(如符号类型、二值类型等)进行处理;(3)发现 任意形状 的聚类:一个聚类可能是任意形状的,聚类算法不能局限于规则形状的聚 类;(4)输入参数的最小化:要求用户输入重要的参数不仅加重了用户的负担, 也使聚类的质量难以控制;(5)对输入顺序的不敏感:不能因为有不同的数据提交 顺序而使聚类的结果不同;(6)高维性:一个数据集可能包含若干维或属性,一 个好的聚类算法不能仅局限于处理二维或三维数据,而需要在高维空间中发现 有意义的聚类 ;(7)基于约束的聚类:在实际应用中要考虑很多约束条件,设计能够满足特定约束条件且具有较好聚

2、 类质量的算法也是一项重要的任务;(8)可解释性:聚类的结果应该是可理解 的、可解释的,以及可用的。1.3聚类应用在商业上,聚类分析被用来发现不同的客户群,并且通过购买模 式刻画不同的客户群的特征。聚类分析是细 分市场的有效工具,同时也可用于 研究消费者行为,寻找新的潜在市场、选择实验的市场,并作为多元分析的预 处理。在生物上,聚类分析被用来动植物分类和对基因进行分类,获取对种群 固有结构的认识。在地理上,聚类能够帮助在地 球中被观察的数据库商趋于的 相似性。在保险行业上,聚类分析通过一个高的平均消费来鉴定汽车保险单持 有者的分 组,同时根据住宅类型,价值,地理位置来鉴定一个城市的 房产分 组

3、。在因特网应用上,聚类分析被用来在网上进行文档归类来修复信息。在电 子商务上,聚类分析在电子商务中网站建设数据挖掘中也是很重要的一个方 面,通过分组聚类出具有相似浏览行为的客户,并分析客户的共同特征,可以 更好的帮助电子商务的用户了解自己的客户,向客户提供更合适的服务。2kmeans算法2.1基本思想划分聚类算法是根据给定的n个对象或者元组的 数据集,构建k个划分聚类的方法。每 个划分即为一个聚簇,并且k ? n。 该方法将数据划分为k个组,每个组至少有一个对象,每个对象必须属于而且 只能属于一个组。1该方法的划分采用按照给定的k个划分要求,先给出一 个初始的划分,然后用迭代重定位技术,通过对

4、象在划分之间的移动来改进划 分。为达到划分的全局最优,划分的聚类可能会穷举所有可能的划分。但在实 际操作中往往采用比较流行的k-means算法或者k-median算法。2.2算法步骤k-means算法最为简单,实现比较容易。每个簇都是使用对象的 平均值来表示步骤一:将所有对象随机分配到k个非空的簇中。步骤二:计算每个簇的平均 值,并用该平均值代表相应的值。步骤三:根据每个对象与各个簇中心的距 离分配给最近的簇。步骤四:转到步骤二重新计算每个簇的平均值。这个 过程不断重复直到满足某个准则函数或者终止条件。终止(收敛)条件 可以是以下任何一个:没有(或者最小数目)数据点被重新分配给不同的聚 类;没

5、有(或者最小数目)聚类中心再发生变化; 误差平方和(SSE)局部最小。其中,k表示需要聚集的类的数目,Cj表示第j个聚类,mj表示聚类Cj的 聚类中心,dist表示数据点x和聚类中心mj之间的距离。利用该准则可以使 所生成的簇尽可能的紧凑和独立。SAS kmeans实现主要是通过proc fastclus过程实现,示 例如下:proc import datafile= n E:cars.txtn out=carsdbms=dlm replace;delimiter= f 09f x;getnames=yes;run;procprint data=cars;proc star)dard data

6、=cars out=stdcars mean=0 std=1 ;varMpg Weight Drive_Ratio Horsepower Displacement;proc fastclus data=stdcars summary maxc=5 maxiter=99outseed=clusterseed out=clusterresult cluster=cluster least=2;id Car;var Mpg Weight Drive_Ratio Horsepower Displacement;2.3算法分析k-means算法对于大型的数据库是相对高效的,一般情况下结 束于局部最优解。

7、但是,k-means算法必须在平均值有意义的情况下才能使 用,对分类变量不适用,事先还要给定生成聚类的数目,对异常数据和数据噪 声比较敏感,不能对非凸面形状的数据进行处理。另外,k-means算 法在聚类过程中可能有的聚类中心没有被分配任何数据而使得某些聚类变为 空,这些聚类通常被称为空聚类。为了解决空聚类问题,我们可以选择一个数据点作为替代的聚类中心。例如,某一个含有大量数据的聚类的聚簇中心最远 的数据点。如果算法的终止条件取决于误差平方和,具有最大误差平方和的聚 类可以被用来寻找另外的聚类中心。3层次聚类算法3.1基本思想层次聚类主要有两种类型:合并的层次聚类和分 裂的层次聚类。前者是一种

8、自底向上的层次聚类算法,从最底层开始,每一次 通过合并最相似的聚类来形成上一层次中的聚类,整个当全部数据点都合并到 一个聚类的时候停止或者达到某个终止条件而结束,大部分层次聚类都是采用 这种方法处理。后者是采用自顶向下的方法,从一个包含全部数据点的聚类开 始,然后把根节点分裂为一些子聚类,每个子聚类再递归地继续往下分裂,直 到出现只包含一个数据点的单节点聚类出现,即每个聚类中仅包含一个数据 点。层次聚类技术是一种无监督学习的技术,因此可能没有确定的、一致的正 确答案。正是由于这个原因,并且在聚类的特定应用的基础之上,可以设计出 较少或较多数量的簇。定义了一个聚类层次,就可以选择希望数量的簇。在

9、极 端的情况下,所有的对象都自成一簇。在这样的情形下,聚类的对象之间非常 相似,并且不同于其他的聚类。当然,这种聚类技术就失去了实际意义,因为 聚类的目的是寻找数据集中的有意义的模式,方便用户理解,而任何聚类的数 目和数据对象一样多的聚类算法都不能帮助用户更好地理解数据,挖掘数据隐 藏的真实含义。这样,矣于聚类的很重要的一点就是应该比原先的数据的数目 更少的簇。到底要形成多少个聚类数目,要根据实际业务的理解,这是如何解 释实际项目的事情。层次聚类算法的好处是它可以让用户从这些簇中选择所感 兴趣的簇,这样更具有灵活性。层次聚类通常被看做成一棵树,其中最小的簇 合并在一起创建下一个较高层次的簇这一

10、层次的簇再合并在一起就创建了再 下一层次 的簇。通过这样的过程,就可以生成一系列的聚类树来完成聚类。单 点聚类处在树的最底层,在树的底层有一个根节点聚类。根节点聚类覆盖了全 部数据节点,兄弟节点聚类则划分了它们共同的父节点中的所有的数据点。图 5是采用统计分析软件SAS对Cars2数据集进行层次聚类的层次聚类结果 图。通过该层次聚类树,用户可以选择查看在树的各个层次上的聚类情况。基 于层次的聚类算法方法比较简单,但是缺乏伸缩性,一旦一个合并或者分裂被 执行,就不能撤销。为了改进层次聚类的效果,可以将层次聚类算法和其他聚 类算法结合使用,形成多阶段的聚类算法。3.2算法步骤层次聚类(hierar

11、chical clustering)算法递归的 对对象进行合并或者 分裂,直到满足某一终止条件为止。层次聚类分为两种,按自底向上层次分解 称为聚合的层次聚类,反之,称为分解的层次聚类。层次聚类算法的计算复杂 度为0(n2),适合小型数据集的分类。CURE、ROCK、BIRCH和 CHAMELEON是聚合层次聚类中最具代表性的方法。它在CURE(Clustering Using REpresentatives)算法采用了抽样和分区的技术、选择 数据空间中固定数目的、具有代表性的一些点来代表相应的类,这样就可以识 别具有复杂形状和不同大小的聚类,从而很好的过滤孤立点。ROCK(RObust Clu

12、stering using linKs)算法是对CURE算法的改进、除了具 有CURE算法的 一些优良特性外,还适用于类别属性的数据。BIRCH(Balanced Iterative Reducing and Clustering using Hierarchy)算法首次提出了通过局部聚类对数据 库进行预处 理的思想。CHAMELEON是Karypis等人1999年提出的, 聚合聚类的过程中利用了动态建模技术。SAS 实例 options nocenter nodate pageno=1 linesize=132;title h = 1 j = IFile:cluster.maminalste

13、eth.sas 1 ;title2 h = 1 j = I ClusterAnalysis of Mammals teeth data ;data teeth;input mammal $ 1- 16wf0007 (v1 - v8) (1 .);label v1 = 1 TopBottomincisors v2= Bottom incisors v3=Top canines v4= canines v5=f Top premolars v6= Bottom premolars !v7 molars 1 v8=f Bottom molars 1 ;cards;BROWN BAT 23113333

14、MOLE 32103333SILVER HAIR BAT 23112333PIGMY BAT 23112233HOUSE BAT 23111233RED BAT 13112233PIKA 21002233RABBIT 21003233BEAVER 11002133GROUNDHOG 11002133GRAY SQUIRREL 11001133HOUSE MOUSE 11000033PORCUPINE 11001133WOLF 33114423BEAR 33114423RACCOON33114432MARTEN 33114412WEASEL 33113312WOLVERINE 33114412B

15、ADGER 33113312RIVER OTTER 33114312SEA OTTER32113312JAGUAR 33113211 COUGAR 33113211FUR SEAL 32114411 SEA LION 32114411 GREY SEAL 32113322ELEPHANT SEAL 21114411 REINDEER 04103333ELK 04103333DEER 04003333MOOSE 04003333;proc princomp data=teeth out=teeth2;var v1-v8;proc cluster data=teeth2 method=averag

16、e outtree=ttreeccc pseudo rsquare;id mammal;proc tree data=ttree out=ttree2 nclusters=4;proc sort data=teeth2;by maminal;proc sort data=ttree2;by mammal;data teeth3;merge teeth2 ttree2;symbol1 c=black f=5 v= T ;symbol2 c=black f=5v= * 2* ;symbol3c=black f=5 v= 3 ; symbol4 c=black f=3 v= 4 ;proc gplo

17、t;plotprin2*prin1 =cluster;proc sort;by clusteryun;proc print;by cluster;var mammal prinl prin2;4SAS聚类分析案例1问题背景考虑下面案例,一个棒球 管理员希望根据队 员们的兴趣相似性将他们进行分组。显然,在该例子中,没有响应变量。管理者希望能够方便地识别出队员的分组情况。 同时,他也希望了解不同组之间队员之间的差异性。该案例的数据集是在 SAMPSI0库中的DMABASE数据集。下面是数据集中的主要的变量的描述信 息:在这个案例中、设置TEAM 、 POSITION 、 LEAGUE,DIVISI

18、ON和SALARY变量的模型角色为rejected,设置SALARY变量的模型角色为rejected是由于它的信息已经存储在LOGSALAR中。在聚类分析和自 组织映射图中是不需要目标变量的。如果需要在一个目标变量上识别分组,可 以考虑预测建模技术或者定义一个分类目标。2聚类方法概述聚类分析经常和有监督分类相混淆,有监督分类是为定义的分类 响应变量预测分组或者类别矢系。而聚类分析,从另一方面考虑,它是一种无 监督分类技术。它能够在所有输入变量的基础上识别出数据集中的分组和类别 信息。这些组、簇,赋予不同的数字。然而,聚类数目不能用来评价类别之间 的近似矢系。自组织映射图尝试创建聚类,并且在一个

19、图上用图形化的方式绘 制出聚类信息,在此处我们并没有考虑。1) 建立初始数据流2) 设置输入数据源结点打开输入数据源结点从SAMPSIO库中选择DMABASE数据 集设置NAME变量的模型角色为 id,TEAM,POSIOTION,LEAGUE,DIVISION 和SALARY变量的模型角色为rejected探索变量的分布和描述性统计信息选择区 间变量选项卡,可以观察到只有LOGSALAR和SALARY变量有缺失值。选 择类别变量选项卡,可以观察到没有缺失值。在本例中,没有涉及到任何类别 变量。矢闭输入数据源结点,并保存信息。3) 设置替代结点虽然并不是总是要处理缺失值,但是有时候缺失值的数量

20、会 影响聚类结点产生的聚类解决方案。为了产生初始聚类,聚类结点往往需要一 些完整的观测值。当缺失值太多的时候,需要用替代结点来处理。虽然这并不是必须的,但是在本例中使用到了。4)设置聚类结点打开聚类结点,激活变量选项卡。K-means聚类对输入数据 是敏感的。一般情况下,考虑对数据集进行标准化处理。在变量选项卡,选择 标准偏差单选框选择聚类选项卡观察到默认选择聚类数目的方法是自动的尖闭 聚类结点5)聚类结果在聚类结点处运行流程图、查看聚类结果。6)限定聚类数目打开聚类结点选择聚类选项卡在聚类数目选择部分,点击选 择标准按钮输入最大聚类数目为10点击ok,矢闭聚类结点7)结果解释我们可以定义每个

21、类别的信息,结合背景识别每个类型的特征。选 择箭头按钮,选择三维聚类图的某一类别,在工具栏选择刷新输入均值图图 标,点击该图标,可以查看该类别的规范化均值图同理,可以根据该方法对其 他类别进行解释。8)运用Insight结点Insight结点可以用来比较不同属性之间 的异常。打开insight结点,选择整个数据集,矣闭结点。从insight结点处运 行。变量_SEGMNT_标识类别,distance标识观测值到所在类别中心的距离。 运用insight窗口的analyze工具评估 和比较聚类结果。首先把_SEGMNT_ 的度量方式从interval转换成nominal R语言篇以R基础包自带的莺

22、尾花(Iris)数据进行聚类分析。分析代码 如下:#代 码清单 #data(iris);attach(iris)iris.hc # plot( iris.he, hang = -1)plclust( iris.he, labels = FALSE, hang =-1)re iris.id table(iris.id,Species)# 运行结果 # table(iris.id,Species)Speciesiris.id setosaversicolor virginical 50 0 02 0 23 493 0 27 1聚类分析生成的图形如下:结果表 明,函数cuttree()将数据iris

23、分类结果iris.hc编为三 组分别以1,2, 3表示, 保存在iris.id中将iris.id与iris中Species作比较发现:1应该是setosa 类,2应该是virginica类(因为virginica的个数明显多于versicolor),3是 versicolor 仍以R基础包自带的莺尾花(Iris)数据进行K-均值聚类分析,分析代码如下:#代码清单#library(fpc)data(iris)dfset.seed(252964) # 设置随机值,为了得到一致结果。(kmeansplotcluster(na.oinit(df)5 kmeans$cluster) # 生成聚类图生成的

24、图如下:Python篇Python运行条件:1. Python运行环境与编辑环境;2.Matplotlib.pyplot图形库,可用于快速绘制2D图表,与matlab中的plot命令类似,而且用法也基本相同。#coding=utf8# 作者:Chan 程序:kmeans 算去 #import matplotlib.pyplot as pitimport mathimport numpyimport randomHdotOringalNum 为各彳、分类最初白勺大 小 dotOringalNum=100#dotAddNum 最后测试点的数目 dotAddNum=1000fig = plt.fig

25、ure()ax =fig.add_subplot(111 )sets=colors= bf 5 1 gf 3 f rf 5 1 yf # 第一颜色为蓝色、在左下角a=txx=O.Otyy=O.Ofor i inrange(05dotOringalNum):tx=float(random.randint(1000,3000)/100ty=float(random.randint(1000,3000)/100a.append(tx5ty)txx+=txtyy+=ty#ax,plot(tx5ty5color=colors0jinestyla.insert(O3txx3tyy)sets.append(

26、a)#第二个分类,颜色为绿色,在右上角 b=txx=0.Otyy=0.Ofor i intx=float(random.randint(400056000)/100ty=float(random.randint(4000,6000)/100b.append(tx5ty)txx+=txtyy+=ty#ax.plot(tx5ty5color=colors1Jinestyl e=n 5marker=.)b.insert(O,txx,tyy)sets.append(b)#类,颜色为红色,在左上角 第三个分c=txx=O.Otyy=O.Ofor i in第四个分测试0)/100ty=float(rand

27、om.randint(4000,6000)/100c.append( tx3ty)txx+=txtyy+=ty #ax.plot(tx,ty5color=colors25linestyl e=M 5marker=)c.insert(O,txx,tyy)sets.append(c)# 类,颜色为黄色,在右下角d=txx=0tyy=0for i in range(0,dotOringalNum):tx=float(random.randint(40 003600 0)/100ty=float(random.randint(1000,3000)/100d.append( tx3ty)txx+=txt

28、yy+=ty #ax.plot(tx5ty,color=colors35linestyl e=n 5marker=* )d.insert(O3txx,tyy)sets.append(d)# for i in range(03dotAddNum):tx=float(random.randint(0370 00)/100 ty=float(random.randint(0370 00)/100dist=9000.0setBelon g=0for j in range(054):length=len(setsj)-1centX=setsj00/lengthcentY=setsj01 /lengthif (centX-tx)*(centX-tx)+(centY-ty)*(centY-ty)运行效果:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1