当前位置:文档之家› 数据分析课程设计论文

数据分析课程设计论文

基于K-均值的Iris数据聚类分析姓名谢稳学号 **********班级信科 14-1成绩 _________________基于K-均值的Iris数据聚类分析姓名: 谢稳信息与计算科学14-1班摘要数据挖掘在当今大数据新起的时代是一项必须掌握的技能,聚类分析是数据挖掘技术中一项重要的研究课题,在很多领域都有具有广泛的应用,如模式识别、数据分析等。

聚类分析的目的是将数据对象分成若干个类或簇,使得在同一个簇中的对象之间具有较高的相似度,而不同簇中的对象之间相似度较低[5]。

通过聚类分析,人们能够识别出数据分布密集和稀疏的区域,发现全局的分布模式以及数据属性之间一些意想不到的相互关系。

本文对R.A.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个数据为锦葵一类。

将数据样本X变量放入matlab变量名X,,保存为matlab的huaban.mat文件。

1.2 数据分析采用谱系聚类分析方法和K-means聚类法解决例如Iris类的分类等问题。

2聚类分析2.1聚类的概述聚类分析是研究对样品或指标进行分类的一种多元统计方法,是依据研究对象的个体的特征进行分类的方法;聚类分析把分类对象按一定规则分成若干类,这些类非事先指定的,而是根据数据特征确定的。

在同一类中这些对象在某种意义上趋向于彼此相似,而在不同类中趋向于不相似;职能是建立一种能按照样品或变量的相似程度进行分类的方法。

聚类准则为“亲者相聚,疏者相分”。

2.2 分类2.2.1 R型聚类分析R型聚类分析是对变量(指标)的分类,其主要作用:不但可以了解个别变量之间的亲疏程度,而且可以了解各个变量组合之间的亲疏程度。

2.2.2 Q 型聚类分析Q 型聚类分析是对样品的分类,其主要作用:可以综合利用多个变量的信息对样本进行分析;分类结果直观,聚类谱系图清楚地表现数值分类结果;所得结果比传统分类方法更细致、全面、合理。

其常用的统计量是距离。

常用的聚类方法为谱系聚类法等。

2.3谱系聚类法 2.3.1概念谱系聚类法是目前应用较为广泛的一种聚类法。

谱系聚类是根据生物分类学的思想对研究对象进行分类的方法。

在生物分类学中,分类的单位是:门、纲、目、科、属、种。

其中种是分类的基本单位,分类单位越小,它所包含的生物就越少,生物之间的共同特征就越多。

利用这种思想,谱系聚类首先将各样品自成一类,然后把最相似(距离最近或相似系数最大)的样品聚为小类,再将已聚合的小类按各类之间的相似性(用类间距离度量)进行再聚合,随着相似性的减弱,最后将一切子类都聚为一大类,从而得到一个按相似性大小聚结起来的一个谱系图。

2.3.2 选择距离(参考文献[1] p209页)在使用系统聚类法进行聚类的过程中, 尤其是Q 型聚类是建立在样品之间距离矩阵的基础上的,通常需要对原始数据进行参考点的建立和去量纲化的处理,然后求出样 品距离矩阵D ,我们采用比较广泛的闵可夫斯基(Minkowski )距离:11d (|x -x |)p mpij ik jk k ==∑当p=2时121d (|x -x |)p mij ik jk k ==∑即为欧几里得CEuclidean )距离。

然后进行类的搜索、合并于距离矩阵的 更新涉及类间距离的计算,需要事先计算类 与类之间的距离。

依据类问距离不同的计算 方法,我们可以把系统聚类法分为最短距离 法、最长距离法、重心法、离差平方和法(ward )等。

设Gp ,Gq 为前一轮操作中形成的某两个聚类,在本轮操作中归聚为新类Gr =Gp ⋃Gq 则新类Gr 与前一轮操作中形成吨,Gq 之外的任意一类 G ,的距离递推公式如下:最短距离法,d 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 β=+ -104β≤≤.中心距离法2222lq pqn n n n d +,p q p q rl pl rrr rdddn n n n =+其中,n p和rn 分别为G p和G r包含的聚类对象个数,r n =n p +n q.Ward 法222l l 2lq pq llln +n n +n n d +,++n +n p q lrl pl r r r ddd 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.1 Iris 花瓣数据谱系聚类图2.6 得出分类由图 2.1得出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 组, 把每组的均值作为中心点。

重新计算每个数据点与各组的中心点的相似性, 根据数据点相似性的度量准则, 把每个数据点重新分组, 计算每组新的均值作为中心点。

不断重复上述过程, 直到中心点的均值收敛,停止迭代过程。

K-means 算法是一种比较快速的聚类方法, 时间复杂度为O ( nkt ), 其中n 是数据点的数目, k 是分组数目, t 是迭代次数。

K-means 算法也存在不足, 最大问题要指定分组数目并且在运行过程中容易导致局部最优。

3.1.1 K-均值算法K-均值算法是一种已知聚类个数的“无监督学习”算法。

首先指定表示聚类个数的K 值,然后对数据集聚类,算法结束时用K 个聚类中心表示聚类结果。

对于设定的目标准则函数,通过向目标准则函数值减小的方向进行迭代更新,目标准则函数值达到极小值时算法结束,得到较优的聚类结果。

设数据集为{}1|i di i X x x R ==∈ ,K 个距离中心为V1,V2,..,Vk 。

令C (1,2,...,)j j k = 表示K 个聚类的类别,则:1V ||ii x C i x C ∈=∑ (1) 定义目标准则函数为:()||11SSE=,i C kj i i j d x V ==∑∑ (2)其中|Ci |表示Ci 类包含样本的个数,使用欧式距离()d ,i j x x =(3)度量样本间的相似性。

欧式距离适用于类内数据对象符合超球形分布的情况,目标准则函数SSE 表示为每个数据对象到相应聚类中心距离的平方和,即聚类均方误差的最小值。

3.1.2 K-均值算法的流程如下:(1)随机选取K 个初始聚类中心V1,V2,...,Vk ;(2)按照最小距离原则,对数据集聚类,确定每个样本的类属关系; (3)使用公式(1)更新K 个簇的中心;(4)重复执行(2)到(4),直到目标准则函数收敛或聚类中心稳定。

显然,初始聚类中心对K-均值算法产生很大的影响,簇集中易存在平均误差较大的簇,聚类结果仅能收敛到局部最优。

即使选取不同的初始聚类中心执行多次K-均值算法,也只是在庞大的初值空间里进行简单的搜索,聚类结果很难达到全局最优。

当数据集中存在较多噪音或孤立点时,已有的初始聚类中心优化方法很难发现合适的初始聚类中心。

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.2谱系聚类结果3.4 K-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] 包研科.数据分析教程.北京:清华大学出版社,2011[2] 曾繁慧.数值分析.徐州:中国矿业大学出版社,2009[3] 袁方,周志勇,宋鑫.初始聚类中心优化的K-means算发 [J] .计算机工程,2007,33(3):65-66[4] MacQueen, James. " Some methods for classification and analysis of multivariate observations." Proceedings of the fifth Berkeley symposium on mathematical statistics andprobability. Vol. 1. No. 281-297. 1967.[5] 余立强.LAMP 架构搭建与网站运行实例[J].网络与信息,2011(8):50-52[6] 吴夙慧,成颖,郑彦宁,潘云涛. K-means 算法研究综述 [J] . 现代图书情报技术, 2011, (5): 28-35.附录A.1 谱系聚类法函数function f = test4()load huaban.matD = 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为聚类指数,来源于初始的聚类中心值,默认情况下为随机的观测% 输出: IDX为最终分类% nr为每个每个聚合的中心值% CENTERS is a matrix, where each row% corresponds to a cluster center.[n,d] = size(x);if nargin < 3ind = ceil(n*rand(1,k));nc = x(ind,:) + randn(k,d);endcid = zeros(1,n);oldcid = ones(1,n);nr = zeros(1,k);maxiter = 100;iter = 1;while ~isequal(cid,oldcid) & iter < maxiterfor i = 1:ndist = sum((repmat(x(i,:),k,1)-nc).^2,2);[m,ind] = min(dist);cid(i) = ind;endfor i = 1:kind = find(cid==i);nc(i,:) = mean(x(ind,:));nr(i) = length(ind);enditer = iter + 1;endmaxiter = 2;iter = 1;move = 1;while iter < maxiter & move ~= 0move = 0;for 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 ~= rcid(i) = ind;ic = find(cid == ind);nc(ind,:) = mean(x(ic,:));move = 1;endenditer = iter+1;endcenters = nc;if move == 0disp('初始化聚类后没有点移动')elsedisp('初始化后开始进行聚合分类')endcid =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:150if cid(i)==1plot(X(i,1),X(i,2),'r*') % 显示第一类hold onelseif cid(i)==2,plot(X(i,1),X(i,2),'b*')%显示第二类plot(X(i,2),'b*') % 显示第一类hold onelseif cid(i)==3,plot(X(i,1),X(i,2),'g*') %显示第三类% plot(X(i,2),'g*')% 显示第一类hold onelseif cid(i)==4,plot(X(i,1),X(i,2),'k*') %显示第四类% plot(X(i,2),'k*') % 显示第一类hold onendendendendendtext(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.1 Iris 数据样本号萼片长萼片宽花瓣长花瓣宽种类1 5.1 3.5 1.4 0.2 牵牛2 4.93 1.4 0.2 牵牛4 4.6 3.1 1.5 0.2 牵牛5 5 3.6 1.4 0.2 牵牛6 5.4 3.9 1.7 0.4 牵牛7 4.6 3.4 1.4 0.3 牵牛8 5 3.4 1.5 0.2 牵牛9 4.4 2.9 1.4 0.2 牵牛10 4.9 3.1 1.5 0.1 牵牛11 5.4 3.7 1.5 0.2 牵牛12 4.8 3.4 1.6 0.2 牵牛13 4.8 3 1.4 0.1 牵牛14 4.3 3 1.1 0.1 牵牛15 5.8 4 1.2 0.2 牵牛16 5.7 4.4 1.5 0.4 牵牛17 5.4 3.9 1.3 0.4 牵牛18 5.1 3.5 1.4 0.3 牵牛19 5.7 3.8 1.7 0.3 牵牛20 5.1 3.8 1.5 0.3 牵牛21 5.4 3.4 1.7 0.2 牵牛22 5.1 3.7 1.5 0.4 牵牛23 4.6 3.6 1 0.2 牵牛24 5.1 3.3 1.7 0.5 牵牛25 4.8 3.4 1.9 0.2 牵牛26 5 3 1.6 0.2 牵牛27 5 3.4 1.6 0.4 牵牛28 5.2 3.5 1.5 0.2 牵牛29 5.2 3.4 1.4 0.2 牵牛30 4.7 3.2 1.6 0.2 牵牛31 4.8 3.1 1.6 0.2 牵牛32 5.4 3.4 1.5 0.4 牵牛33 5.2 4.1 1.5 0.1 牵牛34 5.5 4.2 1.4 0.2 牵牛35 4.9 3.1 1.5 0.2 牵牛36 5 3.2 1.2 0.2 牵牛37 5.5 3.5 1.3 0.2 牵牛38 4.9 3.6 1.4 0.1 牵牛39 4.4 3 1.3 0.2 牵牛40 5.1 3.4 1.5 0.2 牵牛41 5 3.5 1.3 0.3 牵牛42 4.5 2.3 1.3 0.3 牵牛43 4.4 3.2 1.3 0.2 牵牛44 5 3.5 1.6 0.6 牵牛45 5.1 3.8 1.9 0.4 牵牛46 4.8 3 1.4 0.3 牵牛48 4.6 3.2 1.4 0.2 牵牛49 5.3 3.7 1.5 0.2 牵牛50 5 3.3 1.4 0.2 牵牛51 7 3.2 4.7 1.4 杂色52 6.4 3.2 4.5 1.5 杂色53 6.9 3.1 4.9 1.5 杂色54 5.5 2.3 4 1.3 杂色55 6.5 2.8 4.6 1.5 杂色56 5.7 2.8 4.5 1.3 杂色57 6.3 3.3 4.7 1.6 杂色58 4.9 2.4 3.3 1 杂色59 6.6 2.9 4.6 1.3 杂色60 5.2 2.7 3.9 1.4 杂色61 5 2 3.5 1 杂色62 5.9 3 4.2 1.5 杂色63 6 2.2 4 1 杂色64 6.1 2.9 4.7 1.4 杂色65 5.6 2.9 3.6 1.3 杂色66 6.7 3.1 4.4 1.4 杂色67 5.6 3 4.5 1.5 杂色68 5.8 2.7 4.1 1 杂色69 6.2 2.2 4.5 1.5 杂色70 5.6 2.5 3.9 1.1 杂色71 5.9 3.2 4.8 1.8 杂色72 6.1 2.8 4 1.3 杂色73 6.3 2.5 4.9 1.5 杂色74 6.1 2.8 4.7 1.2 杂色75 6.4 2.9 4.3 1.3 杂色76 6.6 3 4.4 1.4 杂色77 6.8 2.8 4.8 1.4 杂色78 6.7 3 5 1.7 杂色79 6 2.9 4.5 1.5 杂色80 5.7 2.6 3.5 1 杂色81 5.5 2.4 3.8 1.1 杂色82 5.5 2.4 3.7 1 杂色83 5.8 2.7 3.9 1.2 杂色84 6 2.7 5.1 1.6 杂色85 5.4 3 4.5 1.5 杂色86 6 3.4 4.5 1.6 杂色87 6.7 3.1 4.7 1.5 杂色88 6.3 2.3 4.4 1.3 杂色89 5.6 3 4.1 1.3 杂色90 5.5 2.5 4 1.3 杂色91 5.5 2.6 4.4 1.2 杂色92 6.1 3 4.6 1.4 杂色93 5.8 2.6 4 1.2 杂色94 5 2.3 3.3 1 杂色95 5.6 2.7 4.2 1.3 杂色96 5.7 3 4.2 1.2 杂色97 5.7 2.9 4.2 1.3 杂色98 6.2 2.9 4.3 1.3 杂色99 5.1 2.5 3 1.1 杂色100 5.7 2.8 4.1 1.3 杂色101 6.3 3.3 6 2.5 锦葵102 5.8 2.7 5.1 1.9 锦葵103 7.1 3 5.9 2.1 锦葵104 6.3 2.9 5.6 1.8 锦葵105 6.5 3 5.8 2.2 锦葵106 7.6 3 6.6 2.1 锦葵107 4.9 2.5 4.5 1.7 锦葵108 7.3 2.9 6.3 1.8 锦葵109 6.7 2.5 5.8 1.8 锦葵110 7.2 3.6 6.1 2.5 锦葵111 6.5 3.2 5.1 2 锦葵112 6.4 2.7 5.3 1.9 锦葵113 6.8 3 5.5 2.1 锦葵114 5.7 2.5 5 2 锦葵115 5.8 2.8 5.1 2.4 锦葵116 6.4 3.2 5.3 2.3 锦葵117 6.5 3 5.5 1.8 锦葵118 7.7 3.8 6.7 2.2 锦葵119 7.7 2.6 6.9 2.3 锦葵120 6 2.2 5 1.5 锦葵121 6.9 3.2 5.7 2.3 锦葵122 5.6 2.8 4.9 2 锦葵123 7.7 2.8 6.7 2 锦葵124 6.3 2.7 4.9 1.8 锦葵125 6.7 3.3 5.7 2.1 锦葵126 7.2 3.2 6 1.8 锦葵127 6.2 2.8 4.8 1.8 锦葵128 6.1 3 4.9 1.8 锦葵129 6.4 2.8 5.6 2.1 锦葵130 7.2 3 5.8 1.6 锦葵131 7.4 2.8 6.1 1.9 锦葵132 7.9 3.8 6.4 2 锦葵133 6.4 2.8 5.6 2.2 锦葵134 6.3 2.8 5.1 1.5 锦葵135 6.1 2.6 5.6 1.4 锦葵136 7.7 3 6.1 2.3 锦葵137 6.3 3.4 5.6 2.4 锦葵138 6.4 3.1 5.5 1.8 锦葵139 6 3 4.8 1.8 锦葵140 6.9 3.1 5.4 2.1 锦葵141 6.7 3.1 5.6 2.4 锦葵142 6.9 3.1 5.1 2.3 锦葵143 5.8 2.7 5.1 1.9 锦葵144 6.8 3.2 5.9 2.3 锦葵145 6.7 3.3 5.7 2.5 锦葵146 6.7 3 5.2 2.3 锦葵147 6.3 2.5 5 1.9 锦葵148 6.5 3 5.2 2 锦葵149 6.2 3.4 5.4 2.3 锦葵150 5.9 3 5.1 1.8 锦葵。

相关主题