matlab聚类算法,科学网—matlab-聚类算法笔记 - 孙月芳的博文
MATLAB提供了兩種方法進行聚類分析:
1、利用clusterdata 函數對數據樣本進行一次聚類,這個方法簡潔方便,其特點是使用范圍較窄,不能由用戶根據自身需要來設定參數,更改距離計算方法;
2、分步聚類:(1)用pdist函數計算變量之間的距離,找到數據集合中兩輛變量之間的相似性和非相似性;(2)用linkage函數定義變量之間的連接;(3)用cophenetic函數評價聚類信息;(4)用cluster函數進行聚類。
clusterdata
一種是利用 clusterdata函數對樣本數據進行一次聚類,其缺點為可供用戶選擇的面較窄,不能更改距離的計算方法;
Construct clusters from data
Syntax
T = clusterdata(X, cutoff)
T = clusterdata(X,'param1',val1,'param2',val2,...)
clusterdata是用plist、linkage、cophenetic三個函數對數據X進行聚類的;
X是m×n的矩陣,cutoff是一個閾值,使得聚類數劃分等級的。
'distance':Any of the distance metric names allowed by pdist (follow the 'minkowski' option by the value of the exponent p);任何距離量度的統稱(例如minkowski距離,歐式距離,馬氏距離等)
'linkage'Any of the linkage methods allowed by the linkage function,(使用linkage的任何連接方法)
'cutoff'Cutoff for inconsistent or distance measure(不一致或距離的測量)
'maxclust'Maximum number of clusters to form(最大數量的聚類形式)
'criterion' Either 'inconsistent' or 'distance'(不一致或距離)
'depth'Depth for computing inconsistent values(計算深度不一致性)
例1
X=[11978 12.5 93.5 31908;…;57500 67.6 238.0 15900];
T=clusterdata(X,0.9);
例2
rand('state',12); %對隨機數使用“state”方法進行隨機數輸出
X = [rand(10,3); rand(10,3)+1.2; rand(10,3)+2.5]; %使用隨機數組成一個10行3列的數據
T = clusterdata(X,'maxclust',3); %對X數組進行聚類,聚成3類
find(T==2)%找到分類為2的類的索引
ans =
11
12
13
14
15
16
17
18
19
20
X的隨機值為=
0.526563655116966?0.314160189162942?0.080065636597459
0.750205183120925?0.460299825114432?0.898696464610818
0.665461227195465?0.694011417546359?0.910465702645885
0.964047588742116?0.001430822000113?0.739874220859649
0.108159056609906?0.553028790706944?0.066380478467501
0.931359132232088?0.825424913690079?0.952315438754947
0.678086959238781?0.341903966913527?0.561481952384538
0.982730942848522?0.704605210117893?0.087097863371214
0.61469160803023?0.046998923124057?0.60240645087182
0.580161260939054?0.917354969151808?0.588163845515278
1.382463100625415?1.963581607169883?1.944378753177476
2.10675860143888?1.67148731861097?1.348544774679616
1.398800733731886?1.661420472538929?1.322245532927235
1.714104593458096?1.491763801233318?1.45432173385559
1.541023406502844?1.843749450951724?1.646589531966269
2.085124805604476?1.845243529032419?2.173408525894387
1.307487415137871?1.538016451755838?2.160077353655978
1.414477011958066?1.993290719360019?1.991074187198809
1.6194348823557?1.477032783770685?1.897881627154902
1.59880598537658?1.549889835739045?1.575633454910911
3.372473795296814?2.696353072311677?3.399817031232327
3.137051221640599?3.365280920827324?3.060890738629505
3.294132532102184?3.19619501414256?2.907001691195813
2.655105137336478?3.067858951189933?2.971985435647922
3.309410399232246?2.592839654750768?2.577141096894014
2.59557218643413?3.334773703571633?3.087931862332622
2.58206179687188?3.416156742412155?3.264419917354281
2.71127001520713?2.770324454152381?2.634665034882088
2.796178480239203?3.254737176245175?3.418015616180941
2.647417542325437?2.545380417876791?3.253541134557589
發現隨機值《5,
當改動X(9,1)=500時,看一些分類結果,根據經驗可知X(9,1)會被單獨分成一類:
find(T==3)
ans =
9
find(T==2)
ans =
1
2
3
4
5
6
7
8
10
11
12
13
14
15
16
17
18
19
20
>> find(T==1)
ans =
21
22
23
24
25
26
27
28
29
30
轉載本文請聯系原作者獲取授權,同時請注明本文來自孫月芳科學網博客。
鏈接地址:http://blog.sciencenet.cn/blog-582961-504552.html
總結
以上是生活随笔為你收集整理的matlab聚类算法,科学网—matlab-聚类算法笔记 - 孙月芳的博文的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 桔橙的功效与作用、禁忌和食用方法
- 下一篇: matlab人脸追踪,求大神帮助我这个菜