《数据分析课程设计论文.docx》由会员分享,可在线阅读,更多相关《数据分析课程设计论文.docx(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数据分析课程设计论文 基于K-均值的Iris数据聚类分析 姓名谢稳 学号 1411010122 班级信科 14-1 成绩 _ 基于K-均值的Iris数据聚类分析 姓名:谢稳 信息与计算科学14-1班 摘要数据挖掘在当今大数据新起的时代是一项必须掌握的技能,聚类分析是数据挖掘技术中一项重要的研究课题,在很多领域都有具有广泛的应用,如模式识别、数据分析等。聚类分析的目的是将数据对象分成若干个类或簇,使得在同一个簇中的对象之间具有较高的相似度,而不同簇中的对象之间相似度较低5。通过聚类分析,人们能够识别出数据分布密集和稀疏的区域,发现全局的分布模式以及数据属性之间一些意想不到的相互关系。本文对R.A
2、.Fisher 在1936 年发表的Iris 数据进行数据挖掘,使用聚类分析中的K-Means对该问题进行进一步分析研究。实验证明两种方法都是适合的解决此类问题的。 关键词Iris数据;聚类分析;K-均值聚类. 0前言 本文对聚类分析的原理进行阐述,并聚类分析中的谱系聚类法和K-means对R.A.Fisher 的Iris 数据进行了数据分析,得到了几乎相同的结论,数据量太少,回带误差大约是20%。 1数据分析预处理 1.1 数据来源 分析的数据来自R.A.Fisher 在1936 年发表的Iris 数据(见附录B表B.1),据表可知前50个数据为牵牛一类,再50个数据为杂色一类,后50个数据
3、为锦葵一类。将数据样本X变量放入matlab变量名X,保存为matlab的huaban.mat文件。 1.2 数据分析 采用谱系聚类分析方法和K-means聚类法解决例如Iris类的分类等问题。 2聚类分析 2.1聚类的概述 聚类分析是研究对样品或指标进行分类的一种多元统计方法,是依据研究对象的个体的特征进行分类的方法;聚类分析把分类对象按一定规则分成若干类,这些类非事先指定的,而是根据数据特征确定的。在同一类中这些对象在某种意义上趋向于彼此相似,而在不同类中趋向于不相似;职能是建立一种能按照样品或变量的相似程度进行分类的方法。聚类准则为“亲者相聚,疏者相分”。 2.2 分类 2.2.1 R型
4、聚类分析 R型聚类分析是对变量(指标)的分类,其主要作用:不但可以了解个别变量之间的亲疏程 度,而且可以了解各个变量组合之间的亲疏程度。 2.2.2 Q 型聚类分析 Q 型聚类分析是对样品的分类,其主要作用:可以综合利用多个变量的信息对样本进行分析;分类结果直观,聚类谱系图清楚地表现数值分类结果;所得结果比传统分类方法更细致、全面、合理。其常用的统计量是距离。常用的聚类方法为谱系聚类法等。 2.3谱系聚类法 2. 3.1概念 谱系聚类法是目前应用较为广泛的一种聚类法。谱系聚类是根据生物分类学的思想对研究对象进行分类的方法。在生物分类学中,分类的单位是:门、纲、目、科、属、种。其中种是分类的基本
5、单位,分类单位越小,它所包含的生物就越少,生物之间的共同特征就越多。利用这种思想,谱系聚类首先将各样品自成一类,然后把最相似(距离最近或相似系数最大)的样品聚为小类,再将已聚合的小类按各类之间的相似性(用类间距离度量)进行再聚合,随着相似性的减弱,最后将一切子类都聚为一大类,从而得到一个按相似性大小聚结起来的一个谱系图。 2.3.2 选择距离(参考文献1 p209页) 在使用系统聚类法进行聚类的过程中, 尤其是Q 型聚类是建立在样品之间距离矩阵的基础上的,通常需要对原始数据进行参考点的建立和去量纲化的处理,然后求出样 品距离矩阵D ,我们采用比较广泛的闵可夫斯基(Minkowski )距离:
6、1 1 d (|x -x |) p m p ij ik jk k = 当p=2时 12 1 d (|x -x |) p m ij ik jk k = 即为欧几里得CEuclidean )距离。 然后进行类的搜索、合并于距离矩阵的 更新涉及类间距离的计算,需要事先计算类 与类之间的距离。依据类问距离不同的计算 方法,我们可以把系统聚类法分为最短距离 法、最长距离法、重心法、离差平方和法(ward )等。 设Gp ,Gq 为前一轮操作中形成的某两个聚类,在本轮操作中归聚为新类 Gr =Gp ?Gq 则新类Gr 与前一轮操作中形成吨,Gq 之外的任意一类 G ,的距离递推公式如下: 最短距离法 ,d
7、 min(),rl pl dql d =其中l p,q. 最长距离法 ,d min(),rl pl dql d =其中l p,q. 中间距离法 2222lq pq 11d +,22rl pl d d d = + -1 04 . 中心距离法 2 2 2 2lq pq n n n n d + ,p q p q rl pl r r r r d d d n n n n = + 其中, n p 和 r n 分别为G p 和G r 包含的聚类对象个数,r n =n p +n q . Ward 法 2 2 2l l 2lq pq l l l n +n n +n n d + ,+n +n p q l rl p
8、l r r r d d d n n n n = - 注意,Ward 法要求初始距离矩阵采用欧式距离公式计算各个对象的距离。 2.4得到闵可夫斯基(Minkowski )距离谱系聚类法函数(见附录A.1) (1)pdist 创建聚类对象的Minkowski 距离矩阵。 (2)squarform 拉直矩阵D 。 (3)linkage 用D 或其拉直矩阵创建信息矩阵G ,默认的类间距离为最短距离法。 (4)dendrogram 创建G 的谱系聚类图。 (5)cluster 创建G 的指定个数类。 2.5画谱系聚类图(见图2.1) 图2.1Iris 花瓣数据谱系聚类图 2.6 得出分类 由图2.1得出
9、Iris 花瓣数据截断处可选择d=1,d=0.8,d=0.666对应的分类个数为2,3,5类。 2.7 cluster 创建G 的指定个数类。(matlab 程序见A.3) 2.7.1 分3类图(见图2.2) 图2.2谱系聚类分析分为三类图 2.8 结论 由图2.2将数据谱系聚类分析分为三类图可知,将数据分为3类不太恰当,应该两类或者5类更合适,不过也有可能是我们选择的距离有问题。下面K-means 我们将更改距离。 3 k-均值聚类 3.1 K-Means 算法思想 1967 年Macqueen 提出了K-means 算法4,基本思想是把数据集中的数据点随机生成k 组,把每组的均值作为中心点
10、。重新计算每个数据点与各组的中心点的相似性,根据数据点相似性的度量准则,把每个数据点重新分组,计算每组新的均值作为中心点。不断重复上述过程,直到中心点的均值收敛,停止迭代过程。K-means 算法是一种比较快速的聚类方法,时间复杂度为O ( nkt ),其中n 是数据点的数目,k 是分组数目,t 是迭代次数。K-means 算法也存在不足,最大问题要指定分组数目并且在运行过程中容易导致局部最优。 3.1.1 K-均值算法 K-均值算法是一种已知聚类个数的“无监督学习”算法。首先指定表示聚类个数的K 值,然后对数据集聚类,算法结束时用K 个聚类中心表示聚类结果。对于设定的目标准则函数,通过向目标
11、准则函数值减小的方向进行迭代更新,目标准则函数值达到极小值时算法结束,得到较优的聚类结果。设数据集为 1 |i d i i X x x R =, K 个距离中心为V1,V2,.,Vk 。令C (1,2,.,)j j k =表示K 个聚类的类别,则: 1 V |i i x C i x C = (1) 定义目标准则函数为: ()| 11 SSE=,i C k j i i j d x V =(2) 其中|Ci |表示Ci 类包含样本的个数,使用欧式距离 () d ,i j x x =3) 度量样本间的相似性。欧式距离适用于类内数据对象符合超球形分布的情况,目标准则 函数SSE 表示为每个数据对象到相
12、应聚类中心距离的平方和,即聚类均方误差的最小值。 3.1.2 K-均值算法的流程如下: (1)随机选取K 个初始聚类中心V1,V2,.,Vk ; (2)按照最小距离原则,对数据集聚类,确定每个样本的类属关系; (3)使用公式(1)更新K 个簇的中心; (4)重复执行(2)到(4),直到目标准则函数收敛或聚类中心稳定。 显然,初始聚类中心对K-均值算法产生很大的影响,簇集中易存在平均误差较大的簇,聚类结果仅能收敛到局部最优。即使选取不同的初始聚类中心执行多次K-均值算法,也只是在庞大的初值空间里进行简单的搜索,聚类结果很难达到全局最优。当数据集中存在较多噪音或孤立点时,已有的初始聚类中心优化方法
13、很难发现合适的初始聚类中心。 3.2复合相关系数的计算(计算过程见附录A.4) 分别记最短、最长、类平均、重心、离差平方和距离为G1、G2、G3、G4、G5,相对应的复合相关系数分别记为R1、R2、R3、R4、R5,以欧式距离为样本间距离计算得到表3-1 表3-1复合相关系数 R1 R2 R3 R4 R5 0.8639 0.7276 0.8768 0.8770 0.8728 由表2可知以重心距离进行聚类分析效果应该最为理想 3.3 聚类结果(见图3.1) 以重心距离为类间距离进行谱系聚类分析得到(matlab 程序参考附录A.1-4) 图3.1谱系聚类图3.4谱系聚类结果(见图3.2) 图3.
14、2谱系聚类结果 3.4K-Means聚类结果(见图3.3) 图3.3K-Means聚类结果 3.5分析结果 由图3.2结果可得第1类有36个样本,第2类有64个样本,第3类有50个样本,由图3.3可知第1类有62个样本,第2类有49个样本,第3类有39个样本两种方法基本得到的结论基本一致,不过都不太理想。这可能是数据量太小了的原因。大数据时代,需要大量的数据。 参考文献 1 包研科.数据分析教程.北京:清华大学出版社,2022 2 曾繁慧.数值分析.徐州:中国矿业大学出版社,2022 3 袁方,周志勇,宋鑫初始聚类中心优化的K-means算发 J .计算机工程,2022,33(3):65-66
15、 4 MacQueen, James. Some methods for classification andanalysis of multivariate observations. Proceedings of thefifth Berkeley symposium on mathematical statistics andprobability. Vol. 1. No. 281-297. 1967 5 余立强LAMP 架构搭建与网站运行实例J网络与信息,2022(8):5052 6 吴夙慧,成颖,郑彦宁,潘云涛. K-means 算法研究综述J . 现代图书情报技术, 2022, (
16、5): 28-35. 附录 A.1谱系聚类法函数 function f = test4() load huaban.mat D = pdist(X,minkowski); G = linkage(D); dendrogram(G); T=cluster(G,3) A.2 自编k-means聚类分析xwKmeans.m函数 function cid,nr,centers = xwKmeans(x,k,nc) % CID,NR,CENTERS = CSKMEANS(X,K,NC) Performs K-means % X输入聚合数据 % K通过观察得到的经验分组数据 % 每行一个观测,NC为聚类指
17、数,来源于初始的聚类中心值,默认情况下为随机的观测 % 输出: IDX为最终分类 % nr为每个每个聚合的中心值 % CENTERS is a matrix, where each row % corresponds to a cluster center. n,d = size(x); if nargin 3 ind = ceil(n*rand(1,k); nc = x(ind,:) + randn(k,d); end cid = zeros(1,n); oldcid = ones(1,n); nr = zeros(1,k); maxiter = 100; iter = 1; while i
18、sequal(cid,oldcid) & iter maxiter for i = 1:n dist = sum(repmat(x(i,:),k,1)-nc).2,2); m,ind = min(dist); cid(i) = ind; end for i = 1:k ind = find(cid=i); nc(i,:) = mean(x(ind,:); nr(i) = length(ind); end iter = iter + 1; end maxiter = 2; iter = 1; move = 1; while iter maxiter & move = 0 move = 0; fo
19、r i = 1:n % 找到与所有聚合的距离 dist = sum(repmat(x(i,:),k,1)-nc).2,2); r = cid(i); dadj = nr./(nr+1).*dist; m,ind = min(dadj); %最小的就是聚合的分类 if ind = r cid(i) = ind; ic = find(cid = ind); nc(ind,:) = mean(x(ic,:); move = 1; end end iter = iter+1; end centers = nc; if move = 0 disp(初始化聚类后没有点移动) else disp(初始化后开
20、始进行聚合分类) end cid =cid; A.3 k-means聚类分析分类图matlab的main.m函数 function f = main (X,k) n,d = size(X); bn=round(n/k*rand);%第一个随机数在前1/K的范围内 %;表示按列显示,都好表示按行显示 %初始聚类中心 %X(bn,:) 选择某一行数据作为聚类中心,其列值为全部 %X数据源,k聚类数目,nc表示k个初始化聚类中心 %cid表示每个数据属于哪一类,nr表示每一类的个数,centers表示聚类中心cid,nr,centers = xwKmeans(X,k) for i=1:150 if
21、cid(i)=1 plot(X(i,1),X(i,2),r*) % 显示第一类 hold on else if cid(i)=2, plot(X(i,1),X(i,2),b*)%显示第二类 plot(X(i,2),b*) % 显示第一类 hold on else if cid(i)=3, plot(X(i,1),X(i,2),g*) %显示第三类 % plot(X(i,2),g*)% 显示第一类 hold on else if cid(i)=4, plot(X(i,1),X(i,2),k*) %显示第四类 % plot(X(i,2),k*) % 显示第一类 hold on end end en
22、d end end text(7.5,3.5,第一类); text(5,4,第二类); text(5.5,2.5,第三类); text(-1,-1,第四类); A.4相关系数matllab指令 d=pdist(x); G1=linkage(d); G2=linkage(d,complete); G3=linkage(d,centroid); G4=linkage(d,average); G5=linkage(d,ward); R1=cophenet(G1,d); R2=cophenet(G2,d); R3=cophenet(G3,d); R4=cophenet(G4,d); R5=cophenet(G5,d); B.1:R.A.Fisher 在1936 年发表的Iris 数据 表B.1Iris 数据 样本号萼片长萼片宽花瓣长花瓣宽种类 1 5.1 3.5 1.4 0. 2 牵牛 2 4.9 3 1. 4 0.2 牵牛