收藏 分享(赏)

k-means聚类算法的研究.doc

上传人:HR专家 文档编号:5914504 上传时间:2019-03-21 格式:DOC 页数:15 大小:176.50KB
下载 相关 举报
k-means聚类算法的研究.doc_第1页
第1页 / 共15页
k-means聚类算法的研究.doc_第2页
第2页 / 共15页
k-means聚类算法的研究.doc_第3页
第3页 / 共15页
k-means聚类算法的研究.doc_第4页
第4页 / 共15页
k-means聚类算法的研究.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

1、k-means 聚类算法的研究1k-means 算法简介1.1 k-means 算法描述给定 n 个对象的数据集 D 和要生成的簇数目 k,划分算法将对象组织划分为 k 个簇(k=n) ,这些簇的形成旨在优化一个目标准则。例如,基于距离的差异性函数,使得根据数据集的属性,在同一个簇中的对象是“相似的” ,而不同簇中的对象是“相异的”。划分聚类算法需要预先指定簇数目或簇中心,通过反复迭代运算,逐步降低目标函数的误差值,当目标函数收敛时,得到最终聚类结果。这类方法分为基于质心的(Centroid-based)划分方法和基于中心的(Medoid-based)划分方法,而基于质心的划分方法是研究最多的

2、算法,其中 k-means 算法是最具代表和知名的。k-means 算法是 1967 年由 MacQueen 首次提出的一种经典算法,经常用于数据挖掘和模式识别中,是一种无监督式的学习算法,其使用目的是对几何进行等价类的划分,即对一组具有相同数据结构的记录按某种分类准则进行分类,以获取若干个同类记录集。k-means 聚类是近年来数据挖掘学科的一个研究热点和重点,这主要是因为它广泛应用于地球科学、信息技术、决策科学、医学、行为学和商业智能等领域。迄今为止,很多聚类任务都选择该算法。k-means 算法是应用最为广泛的聚类算法。该算法以类中各样本的加权均值(成为质心)代表该类,只用于数字属性数据

3、的聚类,算法有很清晰的几何和统计意义,但抗干扰性较差。通常以各种样本与其质心欧几里德距离总和作为目标函数,也可将目标函数修改为各类中任意两点间欧几里德距离总和,这样既考虑了类的分散度也考虑了类的紧致度。k-means 算法是聚类分析中基于原型的划分聚类的应用算法。如果将目标函数看成分布归一化混合模型的似然率对数,k-means 算法就可以看成概率模型算法的推广。k-means 算法基本思想:(1) 随机的选 K 个点作为聚类中心;(2) 划分剩余的点;(3) 迭代过程需要一个收敛准则,此次采用平均误差准则。(4) 求质心(作为中心) ;(5) 不断求质心,直到不再发生变化时,就得到最终的聚类结

4、果。k-means 聚类算法是一种广泛应用的聚类算法,计算速度快,资源消耗少,但是 k-means 算法与初始选择有关系,初始聚类中心选择的随机性决定了算法的有效性和聚类的精度,初始选择不一样,结果也不一样。其缺陷是会陷于局部最优。1.2 k-means 算法实现步骤k-means 聚类算法的处理流程如下:首先,随机选择 k 个对象,每个对象代表一个簇的初始均值或中心;对剩余的每个对象,根据其与各簇中心的距离,将它指派到最近(或最相似)的簇,然后计算每个簇的新均值,得到更新后的簇中心;不断重复,直到准则函数收敛。通常,采用平方误差准则,即对于每个簇中的每个对象,求对象到其中心距离的平方和,这个

5、准则试图生成的 k 个结果簇尽可能地紧凑和独立。1.2.1 k-means 聚类算法的形式化描述算法:k-means输入:聚类个数 k,以及包含 n 个数据对象的数据库 D输出:满足方差最小标准的 k 个聚类处理流程:Step1 从 n 个数据对象任意选择 k 个对象作为初始聚类中心;Step2 根据簇中对象的平均值,将每个对象重新赋给最类似的簇;Step3 更新簇的平均值,即计算每个簇中对象的平均值;Step4 循环 Step2 到 Step3 直到每个聚类不再发生变化为止。1.2.2 k-means 聚类算法的具体步骤1) Function k-means()2) 输入:包含 n 个对象的

6、数据集及簇的数目3) 输出:k 个簇的集合4) 初始化 k 个簇中心w 1,w 2,w k,其中 wj= il,j 1,2,k ,l 1,2 , n5) 使每一个聚类 Cj 与簇中心 wj 中相对应6) repeat7) for 每一个输入向量 il,其中 l 1,2 ,n do8) 将 il 分配给最近的簇中心 wj*所属的聚类 Cj* (即|i lwj*|i lwj|) ,j (1,2,k) )9) for 每一个聚类 Cj,其中 j 1,2 ,k10) 将簇中心更新为当前的 Cj 中所有样本的中心点,即 |iwjljcijlC11) 计算准则函数 E12) Until E 不再明显地改变

7、或者聚类的成员不再变化1.2.3 相关定义(1)两个数据对象间的距离:明氏距离(Minkowski Distance)(公式 1)pkxxd11/qjkiji )|-|(),(这里的 xi=( i1,x i2,x ip)和 xj=( j1,x j2,x jp)是两个 p 维的数据对象并且 ij。欧式距离(Euclidean Distance)当明氏距离中 q=2 时,公式 1 即欧式距离。(公式 2)pkxxd11/2jkiji )|-|(),(马氏距离(Mahalanobis Distance )(公式 3)p)(ij其中 ,i,j=1,2, p。如果 -1 存在,则马氏距离为 nkxx1j

8、kiij -)(-(公式 4)),(),(, ji1Tjiji2 xdM兰式距离(Canberra Distance):(公式 5)pkLxx1jkijiji |-|),((2)准则函数 E对于 K-means 算法,通常使用准则函数 E,也就是误差平方和(Sum of Squared Error,SSE )作为度量聚类质量的目标函数。(公式 6)kiCxid1i2),(其中,d( )表示两个对象之间的距离,可以利用明氏、欧式、马氏或兰氏距离求得。对于相同的 k 值,更小的 SSE 说明簇中对象越集中。对于不同的 k 值,越大的 k值应该越小的 SSE。2k-means 算法应用实例k-mea

9、ns 聚类广泛应用于地球科学、信息技术、决策科学、医学、行为学和商业智能等领域。现以其在气象、遥感两个方面的应用为例,使用 MATLAB 语言编程,实现k-means 算法的应用。2.1 k-means 算法应用实例(一)以我国主要城市 2008 年 14 月份的平均气温数据为基础,使用 MATLAB 语言编程,实现 k-means 算法。2.1.1 算法代码(1)k-means 算法主程序k=3;x = -3.0 0.6 9.1 15.8-3.6 -0.7 8.6 15.8-2.0 2.5 10.6 16.3-5.5 -3.3 7.1 13.1-12.1 -9.3 3.4 11.4-12.6

10、 -7.9 3.8 12.2-15.6 -9.4 3.0 12.1-17.6 -10.5 2.7 11.34.2 4.0 11.4 15.91.5 2.5 11.3 15.63.7 3.9 12.7 17.11.0 2.7 12.5 16.811.0 9.1 15.3 19.33.5 5.5 14.6 18.7-2.0 1.0 10.3 16.3-0.7 2.8 12.1 16.91.2 4.9 14.4 18.52.3 5.5 15.2 18.912.8 11.6 20.1 23.29.4 10.4 19.1 22.916.9 13.3 20.9 25.36.2 7.3 15.5 19.03

11、.7 5.4 13.4 17.21.0 2.2 11.8 15.710.7 8.5 13.7 18.01.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;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 函数for i=1:

12、length(x),if cid(i)=1,plot(x(i,1),x(i,2),r*) % 显示第一类hold onelseif cid(i)=2,plot(x(i,1),x(i,2),b*) %显示第二类hold onelseif cid(i)=3,plot(x(i,1),x(i,2),g*) %显示第三类hold onendendendendstrt=红色 *为第一类;蓝色 *为第二类;绿色*为第三类 ;text(-4,-3.6,strt);(2)kmeans 函数如下:%BasicKMeans.m 主类 function cid,nr,centers = kmeans(x,k,nc)n

13、,d = size(x);% 设置 cid 为分类结果显示矩阵cid = zeros(1,n); % Make this different to get the loop started.oldcid = ones(1,n);% The number in each cluster.nr = zeros(1,k); % Set up maximum number of iterations.maxgn= 100;iter = 1;while iter maxgn%计算每个数据到聚类中心的距离for i = 1:ndist = sum(repmat(x(i,:),k,1)-nc).2,2);m

14、,ind = min(dist); % 将当前聚类结果存入 cid 中cid(i) = ind;endfor i = 1:k%找到每一类的所有数据,计算他们的平均值,作为下次计算的聚类中心ind = find(cid=i);nc(i,:) = mean(x(ind,:);% 统计每一类的数据个数nr(i) = length(ind);enditer = iter + 1;end% Now check each observation to see if the error can be minimized some more.% Loop through all points.maxiter

15、= 2;iter = 1;move = 1;while iter maxiter % 对所有的数据进行再次判断,寻求最佳聚类结果for i = 1:ndist = sum(repmat(x(i,:),k,1)-nc).2,2);r = cid(i); % 将当前数据属于的类给 rdadj = nr./(nr+1).*dist; % 计算调整后的距离m,ind = min(dadj); % 早到该数据距哪个聚类中心最近if ind = r % 如果不等则聚类中心移动cid(i) = ind;%将新的聚类结果送给 cidic = find(cid = ind);%重新计算调整当前类别的聚类中心nc

16、(ind,:) = mean(x(ic,:);move = 1;endenditer = iter+1;endcenters = nc;if move = 0disp(No points were moved after the initial clustering procedure.)elsedisp(Some points were moved after the initial clustering procedure.)end2.1.2 使用数据城 市 1 月 2 月 3 月 4 月北 京 -3 0.6 9.1 15.8天 津 -3.6 -0.7 8.6 15.8石 家 庄 -2 2

17、.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

18、 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.

19、6 5.2 11.12.1.3 分类效果及结果分析(1)聚类过程No points were moved after the initial clustering procedure.cid =Columns 1 through 18 2 2 2 1 1 1 1 1 2 2 2 2 3 2 2 2 2 2Columns 19 through 31 3 3 3 3 2 2 3 2 2 1 1 1 1nr =9 16 6centers =-11.7111 -7.7444 5.0000 11.85560.6625 2.8750 11.6313 16.375011.1667 10.0333 17.43

20、33 21.2833(2)分类效果图图 1 案例一效果图(3)分类结果分析在本案例中主要是对全国主要城市的气温进行 k-means 聚类分析,从而总结出不同地区相同时间段内气温变化的相似性和差异性。但由于数据的原因,效果不是很明显。综合海陆位置、海拔以及经纬度等多种地理学因素,可以得出:第一类红色代表北纬 40以北地区,第二类蓝色代表北纬 2540之间的地区,第三类绿色代表北纬 25以南地区。2.2 k-means 算法应用实例(二)此案例主要是 k-means 算法在遥感图像中的应用:将某一区域的遥感图像波段信息进行标准化处理,标准化的方法为平均值标准化,即(某一波段像元灰度值减去该波段像元

21、灰度平均值)/该波段像元灰度平均值。2.2.1 算法代码(1)k-means 算法主程序%k-means 算法主程序k=4;x = 1.2126 2.1338 0.5115 0.2044-0.9316 0.7634 0.0125 -0.2752-2.9593 0.1813 -0.8833 0.85053.1104 -2.5393 -0.0588 0.1808-3.1141 -0.1244 -0.6811 0.9891-3.2008 0.0024 -1.2901 0.9748-1.0777 1.1438 0.1996 0.0139-2.7213 -0.1909 0.1184 0.1013-1.1

22、467 1.3820 0.1427 -0.22391.1497 1.9414 -0.3035 0.34642.6993 -2.2556 0.1637 -0.0139-3.0311 0.1417 0.0888 0.1791-2.8403 -0.1809 -0.0965 0.08171.0118 2.0372 0.1638 -0.0349-0.8968 1.0260 -0.1013 0.23691.1112 1.8802 -0.0291 -0.15061.1907 2.2041 -0.1060 0.2167-1.0114 0.8029 -0.1317 0.0153-3.1715 0.1041 -0

23、.3338 0.03210.9718 1.9634 0.0305 -0.3259-1.0377 0.8889 -0.2834 0.2301-0.8989 1.0185 -0.0289 0.0213-2.9815 -0.4798 0.2245 0.3085-0.8576 0.9231 -0.2752 -0.0091-3.1356 0.0026 -1.2138 0.77333.4470 -2.2418 0.2014 -0.15562.9143 -1.7951 0.1992 -0.21463.4961 -2.4969 -0.0121 0.1315-2.9341 -0.1071 -0.7712 0.8

24、911-2.8105 -0.0884 -0.0287 -0.12793.1006 -2.0677 -0.2002 -0.13030.8209 2.1724 0.1548 0.3516-2.8500 0.3196 0.1359 -0.1179-2.8679 0.1365 -0.5702 0.7626-2.8245 -0.1312 0.0881 -0.1305-0.8322 1.3014 -0.3837 0.2400-2.6063 0.1431 0.1880 0.0487-3.1341 -0.0854 -0.0359 -0.20800.6893 2.0854 -0.3250 -0.10071.08

25、94 1.7271 -0.0176 0.6553-2.9851 -0.0113 0.0666 -0.08021.0371 2.2724 0.1044 0.3982-2.8032 -0.2737 -0.7391 1.0277-2.6856 0.0619 -1.1066 1.0485-2.9445 -0.1602 -0.0019 0.00931.2004 2.1302 -0.1650 0.34133.2505 -1.9279 0.4462 -0.2405-1.2080 0.8222 0.1671 0.1576-2.8274 0.1515 -0.9636 1.06752.8190 -1.8626 0

26、.2702 0.00261.0507 1.7776 -0.1421 0.0999-2.8946 0.1446 -0.1645 0.3071-1.0105 1.0973 0.0241 0.1628-2.9138 -0.3404 0.0627 0.1286-3.0646 -0.0008 0.3819 -0.15411.2531 1.9830 -0.0774 0.24131.1486 2.0440 -0.0582 -0.0650-3.1401 -0.1447 -0.6580 0.9562-2.9591 0.1598 -0.6581 1.1937-2.9219 -0.3637 -0.1538 -0.2

27、0852.8948 -2.2745 0.2332 -0.0312-3.2972 -0.0219 -0.0288 -0.1436-1.2737 0.7648 0.0643 0.0858-1.0690 0.8108 -0.2723 0.3231-0.5908 0.7508 -0.5456 0.01900.5808 2.0573 -0.1658 0.17092.8227 -2.2461 0.2255 -0.36840.6174 1.7654 -0.3999 0.41253.2587 -1.9310 0.2021 0.08001.0999 1.8852 -0.0475 -0.0585-2.7395 0

28、.2585 -0.8441 0.9987-1.2223 1.0542 -0.2480 -0.2795-2.9212 -0.0605 -0.0259 0.25913.1598 -2.2631 0.1746 0.14850.8476 1.8760 -0.2894 -0.03542.9205 -2.2418 0.4137 -0.24992.7656 -2.1768 0.0719 -0.1848-0.8698 1.0249 -0.2084 -0.0008-1.1444 0.7787 -0.4958 0.3676-1.0711 1.0450 -0.0477 -0.40300.5350 1.8110 -0

29、.0377 0.16220.9076 1.8845 -0.1121 0.5700-2.7887 -0.2119 0.0566 0.0120-1.2567 0.9274 0.1104 0.1581-2.9946 -0.2086 -0.8169 0.66621.0536 1.9818 -0.0631 0.2581-2.8465 -0.2222 0.2745 0.1997-2.8516 0.1649 -0.7566 0.8616-3.2470 0.0770 0.1173 -0.1092-2.9322 -0.0631 -0.0062 -0.0511-2.7919 0.0438 -0.1935 -0.5

30、0230.9894 1.9475 -0.0146 -0.0390-2.9659 -0.1300 0.1144 0.3410-2.7322 -0.0427 -1.0758 0.9718-1.4852 0.8592 -0.0503 -0.13732.8845 -2.1465 -0.0533 -0.1044-3.1470 0.0536 0.1073 0.33232.9423 -2.1572 0.0505 0.1180-3.0683 0.3434 -0.6563 0.89601.3215 2.0951 -0.1557 0.3994-0.7681 1.2075 -0.2781 0.2372-0.6964

31、 1.2360 -0.3342 0.1662-0.6382 0.8204 -0.2587 0.3344-3.0233 -0.1496 -0.2607 -0.0400-0.8952 0.9872 0.0019 0.3138-0.8172 0.6814 -0.0691 0.1009-3.3032 0.0571 -0.0243 -0.14050.7810 1.9013 -0.3996 0.7374-0.9030 0.8646 -0.1498 0.1112-0.8461 0.9261 -0.1295 -0.07272.8182 -2.0818 -0.1430 -0.05472.9295 -2.3846

32、 -0.0244 -0.14001.0587 2.2227 -0.1250 0.09573.0755 -1.7365 -0.0511 0.1500-1.3076 0.8791 -0.3720 0.0331-2.8252 -0.0366 -0.6790 0.7374-2.6551 -0.1875 0.3222 0.0483-2.9659 -0.1585 0.4013 -0.1402-3.2859 -0.1546 0.0104 -0.1781-0.6679 1.1999 0.1396 -0.3195-1.0205 1.2226 0.1850 0.0050-3.0091 -0.0186 -0.911

33、1 0.9663-3.0339 0.1377 -0.9662 1.06640.8952 1.9594 -0.3221 0.3579-2.8481 0.1963 -0.1428 0.03821.0796 2.1353 -0.0792 0.6491-0.8732 0.8985 -0.0049 0.00681.0620 2.1478 -0.1275 0.35533.4509 -1.9975 0.1285 -0.1575-3.2280 -0.0640 -1.1513 0.8235-0.6654 0.9402 0.0577 -0.0175-3.2100 0.2762 -0.1053 0.06263.07

34、93 -2.0043 0.2948 0.04111.3596 1.9481 -0.0167 0.3958-3.1267 0.1801 0.2228 0.1179-0.7979 0.9892 -0.2673 0.47342.5580 -1.7623 -0.1049 -0.0521-0.9172 1.0621 -0.0826 0.1501-0.7817 1.1658 0.1922 0.08033.1747 -2.1442 0.1472 -0.34112.8476 -1.8056 -0.0680 0.1536-0.6175 1.4349 -0.1970 -0.10850.7308 1.9656 0.

35、2602 0.2801-1.0310 1.0553 -0.2928 -0.1647-2.9251 -0.2095 0.0582 -0.1813-0.9827 1.2720 -0.2225 0.2563-1.0830 1.1158 -0.0405 -0.1181-2.8744 0.0195 -0.3811 0.14553.1663 -1.9241 0.0455 0.1684-1.0734 0.7681 -0.4725 -0.1976;n,d = size(x);bn=round(n/k*rand);%第一个随机数在前 1/K 的范围内nc=x(bn,:);x(2*bn,:);x(3*bn,:);

36、x(4*bn,:);%初始聚类中心cid,nr,centers = kmeans(x,k,nc)%调用 kmeans 函数for i=1:150,if cid(i)=1,plot(x(i,1),x(i,2),r*) % 显示第一类hold onelseif cid(i)=2,plot(x(i,1),x(i,2),b*) %显示第二类hold onelseif cid(i)=3,plot(x(i,1),x(i,2),g*) %显示第三类hold onelseif cid(i)=4,plot(x(i,1),x(i,2),k*) %显示第四类hold onendendendendendstrt=红色

37、 *为第一类;蓝色 *为第二类;绿色*为第三类;黑色*为第四类 ;text(-4,-3.6,strt);(2)kmeans 函数kmeans 函数同案例(一)2.2.2 使用数据(由于数据太多,就不在此表述,数据已经在程序中表述)2.2.3 分类效果图及结果分析(1)聚类过程No points were moved after the initial clustering procedure.cid =Columns 1 through 18 1 4 2 3 2 2 4 2 4 1 3 2 2 1 4 1 1 4Columns 19 through 36 2 1 4 4 2 4 2 3 3 3

38、 2 2 3 1 2 2 2 4Columns 37 through 54 2 2 1 1 2 1 2 2 2 1 3 4 2 3 1 2 4 2Columns 55 through 72 2 1 1 2 2 2 3 2 4 4 4 1 3 1 3 1 2 4Columns 73 through 90 2 3 1 3 3 4 4 4 1 1 2 4 2 1 2 2 2 2Columns 91 through 108 2 1 2 2 4 3 2 3 2 1 4 4 4 2 4 4 2 1Columns 109 through 126 4 4 3 3 1 3 4 2 2 2 2 4 4 2 2 1

39、 2 1Columns 127 through 144 4 1 3 2 4 2 3 1 2 4 3 4 4 3 3 4 1 4Columns 145 through 150 2 4 4 2 3 4nr =30 55 25 40centers =0.9952 1.9979 -0.0785 0.2296-2.9629 -0.0230 -0.2970 0.34113.0234 -2.0986 0.1021 -0.0506-0.9569 0.9978 -0.1237 0.0493(2)分类效果图图 2 案例二效果图(3)分类结果分析k-means 算法在本案例中主要是对遥感图像像元灰度值进行聚类分析,

40、从而确定地物类型,最后根据像元灰度值的特定规律,结合地理学知识,对遥感图像进行解译。综合遥感波段知识,可以得出:第一类红色的代表居民地,第二类蓝色代表植被,第三类绿色代表水体,第四类黑色的代表裸岩。【参考文献】1 陈晓春. 基于 K-Means 和 EM 算法的聚类分析J. 福建 电脑, 2009,2:79-80.2 步媛媛,关忠仁. 基于 K-means 聚类算法的研究J. 西南民族大学学报,2009,35(1):198-200.3 陈寿文,李明东. 基于面向对象思想 K-Means 算法实现 J. 滁州学院学报, 2008,10(3):42-44.4 黄振华,向阳,张波,王栋,刘 啸岭. 一种进行 K-Means 聚类的有效方法J. 模式识别与人工智能,2010,23(4):516-521.5 陈燕.数据挖掘技术与应用M. 北京: 清华大学出版社,2011.6 蒋盛益,李霞,郑琪.数据挖掘原理与实践M. 北京: 电子工业出版社,2011.7 邵峰晶,于忠清,王金龙, 孙仁诚. 数据挖掘原理与算法M. 北京:科学出版社,2011.

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

当前位置:首页 > 学术论文 > 大学论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报