kmeans聚类算法的研究.docx

上传人:b****7 文档编号:9012516 上传时间:2023-02-02 格式:DOCX 页数:22 大小:70.31KB
下载 相关 举报
kmeans聚类算法的研究.docx_第1页
第1页 / 共22页
kmeans聚类算法的研究.docx_第2页
第2页 / 共22页
kmeans聚类算法的研究.docx_第3页
第3页 / 共22页
kmeans聚类算法的研究.docx_第4页
第4页 / 共22页
kmeans聚类算法的研究.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

kmeans聚类算法的研究.docx

《kmeans聚类算法的研究.docx》由会员分享,可在线阅读,更多相关《kmeans聚类算法的研究.docx(22页珍藏版)》请在冰豆网上搜索。

kmeans聚类算法的研究.docx

kmeans聚类算法的研究

k-means聚类算法的研究

1.k-means算法简介

1.1k-means算法描述

给定n个对象的数据集D和要生成的簇数目k,划分算法将对象组织划分为k个簇(k<=n),这些簇的形成旨在优化一个目标准则。

例如,基于距离的差异性函数,使得根据数据集的属性,在同一个簇中的对象是“相似的”,而不同簇中的对象是“相异的”。

划分聚类算法需要预先指定簇数目或簇中心,通过反复迭代运算,逐步降低目标函数的误差值,当目标函数收敛时,得到最终聚类结果。

这类方法分为基于质心的(Centroid-based)划分方法和基于中心的(Medoid-based)划分方法,而基于质心的划分方法是研究最多的算法,其中k-means算法是最具代表和知名的。

k-means算法是1967年由MacQueen首次提出的一种经典算法,经常用于数据挖掘和模式识别中,是一种无监督式的学习算法,其使用目的是对几何进行等价类的划分,即对一组具有相同数据结构的记录按某种分类准则进行分类,以获取若干个同类记录集。

k-means聚类是近年来数据挖掘学科的一个研究热点和重点,这主要是因为它广泛应用于地球科学、信息技术、决策科学、医学、行为学和商业智能等领域。

迄今为止,很多聚类任务都选择该算法。

k-means算法是应用最为广泛的聚类算法。

该算法以类中各样本的加权均值(成为质心)代表该类,只用于数字属性数据的聚类,算法有很清晰的几何和统计意义,但抗干扰性较差。

通常以各种样本与其质心欧几里德距离总和作为目标函数,也可将目标函数修改为各类中任意两点间欧几里德距离总和,这样既考虑了类的分散度也考虑了类的紧致度。

k-means算法是聚类分析中基于原型的划分聚类的应用算法。

如果将目标函数看成分布归一化混合模型的似然率对数,k-means算法就可以看成概率模型算法的推广。

k-means算法基本思想:

(1)随机的选K个点作为聚类中心;

(2)划分剩余的点;

(3)迭代过程需要一个收敛准则,此次采用平均误差准则。

(4)求质心(作为中心);

(5)不断求质心,直到不再发生变化时,就得到最终的聚类结果。

k-means聚类算法是一种广泛应用的聚类算法,计算速度快,资源消耗少,但是k-means算法与初始选择有关系,初始聚类中心选择的随机性决定了算法的有效性和聚类的精度,初始选择不一样,结果也不一样。

其缺陷是会陷于局部最优。

1.2k-means算法实现步骤

k-means聚类算法的处理流程如下:

首先,随机选择k个对象,每个对象代表一个簇的初始均值或中心;对剩余的每个对象,根据其与各簇中心的距离,将它指派到最近(或最相似)的簇,然后计算每个簇的新均值,得到更新后的簇中心;不断重复,直到准则函数收敛。

通常,采用平方误差准则,即对于每个簇中的每个对象,求对象到其中心距离的平方和,这个准则试图生成的k个结果簇尽可能地紧凑和独立。

1.2.1k-means聚类算法的形式化描述

算法:

k-means

输入:

聚类个数k,以及包含n个数据对象的数据库D

输出:

满足方差最小标准的k个聚类

处理流程:

Step1从n个数据对象任意选择k个对象作为初始聚类中心;

Step2根据簇中对象的平均值,将每个对象重新赋给最类似的簇;

Step3更新簇的平均值,即计算每个簇中对象的平均值;

Step4循环Step2到Step3直到每个聚类不再发生变化为止。

1.2.2k-means聚类算法的具体步骤

1)Functionk-means()

2)输入:

包含n个对象的数据集及簇的数目

3)输出:

k个簇的集合

4)初始化k个簇中心{w1,w2,…,wk},其中wj=il,j∈{1,2,…,k},l∈{1,2,…,n}

5)使每一个聚类Cj与簇中心wj中相对应

6)repeat

7)for每一个输入向量il,其中l∈{1,2,…,n}do

8)将il分配给最近的簇中心wj*所属的聚类Cj*

(即|il—wj*|≦|il—wj|),j∈(1,2,…,k))

9)for每一个聚类Cj,其中j∈{1,2,…,k}

10)将簇中心更新为当前的Cj中所有样本的中心点,即

11)计算准则函数E

12)UntilE不再明显地改变或者聚类的成员不再变化

1.2.3相关定义

(1)两个数据对象间的距离:

①明氏距离(MinkowskiDistance)

(公式1)

这里的xi=(

i1,xi2,…,xip)和xj=(

j1,xj2,…,xjp)是两个p维的数据对象并且i≠j。

②欧式距离(EuclideanDistance)

当明氏距离中q=2时,公式1即欧式距离。

(公式2)

③马氏距离(MahalanobisDistance)

(公式3)

其中

,i,j=1,2…,p。

如果∑-1存在,则马氏距离为

(公式4)

④兰式距离(CanberraDistance):

(公式5)

(2)准则函数E

对于K-means算法,通常使用准则函数E,也就是误差平方和(SumofSquaredError,SSE)作为度量聚类质量的目标函数。

(公式6)

其中,d()表示两个对象之间的距离,可以利用明氏、欧式、马氏或兰氏距离求得。

对于相同的k值,更小的SSE说明簇中对象越集中。

对于不同的k值,越大的k值应该越小的SSE。

2.k-means算法应用实例

k-means聚类广泛应用于地球科学、信息技术、决策科学、医学、行为学和商业智能等领域。

现以其在气象、遥感两个方面的应用为例,使用MATLAB语言编程,实现k-means算法的应用。

2.1k-means算法应用实例

(一)

以我国主要城市2008年1~4月份的平均气温数据为基础,使用MATLAB语言编程,实现k-means算法。

2.1.1算法代码

(1)k-means算法主程序

k=3;

x=[-3.00.69.115.8

-3.6-0.78.615.8

-2.02.510.616.3

-5.5-3.37.113.1

-12.1-9.33.411.4

-12.6-7.93.812.2

-15.6-9.43.012.1

-17.6-10.52.711.3

4.24.011.415.9

1.52.511.315.6

3.73.912.717.1

1.02.712.516.8

11.09.115.319.3

3.55.514.618.7

-2.01.010.316.3

-0.72.812.116.9

1.24.914.418.5

2.35.515.218.9

12.811.620.123.2

9.410.419.122.9

16.913.320.925.3

6.27.315.519.0

3.75.413.417.2

1.02.211.815.7

10.78.513.718.0

1.51.45.610.1

-1.71.812.516.4

-6.6-4.19.113.8

-9.6-7.93.48.3

-10.2-7.77.313.4

-15.6-9.65.211.1];

[n,d]=size(x);

bn=round(n/k*rand);%第一个随机数在前1/K的范围内

nc=[x(bn,:

);x(2*bn,:

);x(3*bn,:

)];%初始聚类中心

[cid,nr,centers]=kmeans(x,k,nc)%调用kmeans函数

fori=1:

length(x),

ifcid(i)==1,

plot(x(i,1),x(i,2),'r*')%显示第一类

holdon

else

ifcid(i)==2,

plot(x(i,1),x(i,2),'b*')%显示第二类

holdon

else

ifcid(i)==3,

plot(x(i,1),x(i,2),'g*')%显示第三类

holdon

end

end

end

end

strt=['红色*为第一类;蓝色*为第二类;绿色*为第三类'];

text(-4,-3.6,strt);

(2)kmeans函数如下:

%BasicKMeans.m主类

function[cid,nr,centers]=kmeans(x,k,nc)

[n,d]=size(x);

%设置cid为分类结果显示矩阵

cid=zeros(1,n);

%Makethisdifferenttogettheloopstarted.

oldcid=ones(1,n);

%Thenumberineachcluster.

nr=zeros(1,k);

%Setupmaximumnumberofiterations.

maxgn=100;

iter=1;

whileiter

%计算每个数据到聚类中心的距离

fori=1:

n

dist=sum((repmat(x(i,:

),k,1)-nc).^2,2);

[m,ind]=min(dist);%将当前聚类结果存入cid中

cid(i)=ind;

end

fori=1:

k

%找到每一类的所有数据,计算他们的平均值,作为下次计算的聚类中心

ind=find(cid==i);

nc(i,:

)=mean(x(ind,:

));

%统计每一类的数据个数

nr(i)=length(ind);

end

iter=iter+1;

end

%Nowcheckeachobservationtoseeiftheerrorcanbeminimizedsomemore.

%Loopthroughallpoints.

maxiter=2;

iter=1;

move=1;

whileiter

move=0;

%对所有的数据进行再次判断,寻求最佳聚类结果

fori=1:

n

dist=sum((repmat(x(i,:

),k,1)-nc).^2,2);

r=cid(i);%将当前数据属于的类给r

dadj=nr./(nr+1).*dist';%计算调整后的距离

[m,ind]=min(dadj);%早到该数据距哪个聚类中心最近

ifind~=r%如果不等则聚类中心移动

 cid(i)=ind;%将新的聚类结果送给cid

 ic=find(cid==ind);%重新计算调整当前类别的聚类中心

 nc(ind,:

)=mean(x(ic,:

));

 move=1;

end

end

iter=iter+1;

end

centers=nc;

ifmove==0

disp('Nopointsweremovedaftertheinitialclusteringprocedure.')

else

disp('Somepointsweremovedaftertheinitialclusteringprocedure.')

end

2.1.2使用数据

城市

1月

2月

3月

4月

北京

-3

0.6

9.1

15.8

天津

-3.6

-0.7

8.6

15.8

石家庄

-2

2.5

10.6

16.3

太原

-5.5

-3.3

7.1

13.1

呼和浩特

-12.1

-9.3

3.4

11.4

沈阳

-12.6

-7.9

3.8

12.2

长春

-15.6

-9.4

3

12.1

哈尔滨

-17.6

-10.5

2.7

11.3

上海

4.2

4

11.4

15.9

南京

1.5

2.5

11.3

15.6

杭州

3.7

3.9

12.7

17.1

合肥

1

2.7

12.5

16.8

福州

11

9.1

15.3

19.3

南昌

3.5

5.5

14.6

18.7

济南

-2

1

10.3

16.3

郑州

-0.7

2.8

12.1

16.9

武汉

1.2

4.9

14.4

18.5

长沙

2.3

5.5

15.2

18.9

广州

12.8

11.6

20.1

23.2

南宁

9.4

10.4

19.1

22.9

海口

16.9

13.3

20.9

25.3

重庆

6.2

7.3

15.5

19

成都

3.7

5.4

13.4

17.2

贵阳

1

2.2

11.8

15.7

昆明

10.7

8.5

13.7

18

拉萨

1.5

1.4

5.6

10.1

西安

-1.7

1.8

12.5

16.4

兰州

-6.6

-4.1

9.1

13.8

西宁

-9.6

-7.9

3.4

8.3

银川

-10.2

-7.7

7.3

13.4

乌鲁木齐

-15.6

-9.6

5.2

11.1

2.1.3分类效果及结果分析

(1)聚类过程

Nopointsweremovedaftertheinitialclusteringprocedure.

cid=

Columns1through18

222111112222322222

Columns19through31

3333223221111

nr=

9166

centers=

-11.7111-7.74445.000011.8556

0.66252.875011.631316.3750

11.166710.033317.433321.2833

(2)分类效果图

图1案例一效果图

(3)分类结果分析

在本案例中主要是对全国主要城市的气温进行k-means聚类分析,从而总结出不同地区相同时间段内气温变化的相似性和差异性。

但由于数据的原因,效果不是很明显。

综合海陆位置、海拔以及经纬度等多种地理学因素,可以得出:

第一类红色代表北纬40°以北地区,第二类蓝色代表北纬25°~40°之间的地区,第三类绿色代表北纬25°以南地区。

2.2k-means算法应用实例

(二)

此案例主要是k-means算法在遥感图像中的应用:

将某一区域的遥感图像波段信息进行标准化处理,标准化的方法为平均值标准化,即(某一波段像元灰度值减去该波段像元灰度平均值)/该波段像元灰度平均值。

2.2.1算法代码

(1)k-means算法主程序

%k-means算法主程序

k=4;

x=[1.21262.13380.51150.2044

-0.93160.76340.0125-0.2752

-2.95930.1813-0.88330.8505

3.1104-2.5393-0.05880.1808

-3.1141-0.1244-0.68110.9891

-3.20080.0024-1.29010.9748

-1.07771.14380.19960.0139

-2.7213-0.19090.11840.1013

-1.14671.38200.1427-0.2239

1.14971.9414-0.30350.3464

2.6993-2.25560.1637-0.0139

-3.03110.14170.08880.1791

-2.8403-0.1809-0.09650.0817

1.01182.03720.1638-0.0349

-0.89681.0260-0.10130.2369

1.11121.8802-0.0291-0.1506

1.19072.2041-0.10600.2167

-1.01140.8029-0.13170.0153

-3.17150.1041-0.33380.0321

0.97181.96340.0305-0.3259

-1.03770.8889-0.28340.2301

-0.89891.0185-0.02890.0213

-2.9815-0.47980.22450.3085

-0.85760.9231-0.2752-0.0091

-3.13560.0026-1.21380.7733

3.4470-2.24180.2014-0.1556

2.9143-1.79510.1992-0.2146

3.4961-2.4969-0.01210.1315

-2.9341-0.1071-0.77120.8911

-2.8105-0.0884-0.0287-0.1279

3.1006-2.0677-0.2002-0.1303

0.82092.17240.15480.3516

-2.85000.31960.1359-0.1179

-2.86790.1365-0.57020.7626

-2.8245-0.13120.0881-0.1305

-0.83221.3014-0.38370.2400

-2.60630.14310.18800.0487

-3.1341-0.0854-0.0359-0.2080

0.68932.0854-0.3250-0.1007

1.08941.7271-0.01760.6553

-2.9851-0.01130.0666-0.0802

1.03712.27240.10440.3982

-2.8032-0.2737-0.73911.0277

-2.68560.0619-1.10661.0485

-2.9445-0.1602-0.00190.0093

1.20042.1302-0.16500.3413

3.2505-1.92790.4462-0.2405

-1.20800.82220.16710.1576

-2.82740.1515-0.96361.0675

2.8190-1.86260.27020.0026

1.05071.7776-0.14210.0999

-2.89460.1446-0.16450.3071

-1.01051.09730.02410.1628

-2.9138-0.34040.06270.1286

-3.0646-0.00080.3819-0.1541

1.25311.9830-0.07740.2413

1.14862.0440-0.0582-0.0650

-3.1401-0.1447-0.65800.9562

-2.95910.1598-0.65811.1937

-2.9219-0.3637-0.1538-0.2085

2.8948-2.27450.2332-0.0312

-3.2972-0.0219-0.0288-0.1436

-1.27370.76480.06430.0858

-1.06900.8108-0.27230.3231

-0.59080.7508-0.54560.0190

0.58082.0573-0.16580.1709

2.8227-2.24610.2255-0.3684

0.61741.7654-0.39990.4125

3.2587-1.93100.20210.0800

1.09991.8852-0.0475-0.0585

-2.73950.2585-0.84410.9987

-1.22231.0542-0.2480-0.2795

-2.9212-0.0605-0.02590.2591

3.1598-2.26310.17460.1485

0.84761.8760-0.2894-0.0354

2.9205-2.24180.4137-0.2499

2.7656-2.17680.0719-0.1848

-0.86981.0249-0.2084-0.0008

-1.14440.7787-0.49580.3676

-1.07111.0450-0.0477-0.4030

0.53501.8110-0.03770.1622

0.90761.8845-0.11210.5700

-2.7887-0.21190.05660.0120

-1.25670.92740.11040.1581

-2.9946-0.2086-0.81690.6662

1.05361.9818-0.06310.2581

-2.8465-0.22220.27450.1997

-2.85160.1649-0.75660.8616

-3.24700.07700.1173-0.1092

-2.9322-0.0631-0.0062-0.0511

-2.79190.0438-0.1935-0.5023

0.98941.9475-0.0146-0.0390

-2.9659-0.13000.11440.3410

-2.7322-0.0427-1.07580.9718

-1.48520.8592-0.0503-0.1373

2.8845-2.1465-0.0533-0.1044

-3.14700.05360.10730.3323

2.9423-2.15720.05050.1180

-3.06830.3434-0.65630.8960

1.32152.0951-0.15570.3994

-0.76811.2075-0.27810.2372

-0.69641.2360-0.33420.1662

-0.63820.8204-0.25870.3344

-3.0233-0.1496-0.2607-0.0400

-0.89520.98720.00190.3138

-0.81720.6814-0.06910.1009

-3.30320.0571-0.0243-0.1405

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 育儿理论经验

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

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