kmeans聚类算法的研究文档格式.docx
- 文档编号:6358659
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:21
- 大小:75.21KB
kmeans聚类算法的研究文档格式.docx
《kmeans聚类算法的研究文档格式.docx》由会员分享,可在线阅读,更多相关《kmeans聚类算法的研究文档格式.docx(21页珍藏版)》请在冰点文库上搜索。
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,
b*'
)%显示第二类
ifcid(i)==3,
g*'
)%显示第三类
end
end
strt=['
红色*为第一类;
蓝色*为第二类;
绿色*为第三类'
];
text(-4,-3.6,strt);
(2)kmeans函数如下:
%BasicKMeans.m主类
function[cid,nr,centers]=kmeans(x,k,nc)
%设置cid为分类结果显示矩阵
cid=zeros(1,n);
%Makethisdifferenttogettheloopstarted.
oldcid=ones(1,n);
%Thenumberineachcluster.
nr=zeros(1,k);
%Setupmaximumnumberofiterations.
maxgn=100;
iter=1;
whileiter<
maxgn
%计算每个数据到聚类中心的距离
fori=1:
n
dist=sum((repmat(x(i,:
),k,1)-nc).^2,2);
[m,ind]=min(dist);
%将当前聚类结果存入cid中
cid(i)=ind;
k
%找到每一类的所有数据,计算他们的平均值,作为下次计算的聚类中心
ind=find(cid==i);
nc(i,:
)=mean(x(ind,:
));
%统计每一类的数据个数
nr(i)=length(ind);
iter=iter+1;
%Nowcheckeachobservationtoseeiftheerrorcanbeminimizedsomemore.
%Loopthroughallpoints.
maxiter=2;
move=1;
maxiter&
move~=0
move=0;
%对所有的数据进行再次判断,寻求最佳聚类结果
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;
iter=iter+1;
centers=nc;
ifmove==0
disp('
Nopointsweremovedaftertheinitialclusteringprocedure.'
)
else
Somepointsweremovedaftertheinitialclusteringprocedure.'
2.1.2使用数据
城市
1月
2月
3月
4月
北京
-3
0.6
9.1
15.8
天津
-3.6
-0.7
8.6
石家庄
-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
15.9
南京
1.5
15.6
杭州
3.7
3.9
12.7
17.1
合肥
1
12.5
16.8
福州
11
15.3
19.3
南昌
3.5
5.5
14.6
18.7
济南
10.3
郑州
2.8
16.9
武汉
1.2
4.9
14.4
18.5
长沙
2.3
15.2
18.9
广州
12.8
11.6
20.1
23.2
南宁
9.4
10.4
19.1
22.9
海口
13.3
20.9
25.3
重庆
6.2
7.3
15.5
19
成都
5.4
13.4
17.2
贵阳
2.2
11.8
15.7
昆明
10.7
8.5
13.7
18
拉萨
1.4
5.6
10.1
西安
-1.7
1.8
16.4
兰州
-6.6
-4.1
13.8
西宁
-9.6
8.3
银川
-10.2
-7.7
乌鲁木齐
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算法代码
%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
0.7810
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- kmeans 算法 研究