kmeans聚类算法的研究.docx
- 文档编号:9012516
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:22
- 大小:70.31KB
kmeans聚类算法的研究.docx
《kmeans聚类算法的研究.docx》由会员分享,可在线阅读,更多相关《kmeans聚类算法的研究.docx(22页珍藏版)》请在冰豆网上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- kmeans 算法 研究