1. 用Matlab編程實現
運用Matlab中的一些基本矩陣計算方法,通過自己編程實現聚類算法,在此只討論根據最短距離規則聚類的方法。
調用函數:
min1.m——求矩陣最小值,返回最小值所在行和列以及值的大小
min2.m——比較兩數大小,返回較小值
std1.m——用極差標準化法標準化矩陣
ds1.m——用絕對值距離法求距離矩陣
cluster.m——應用最短距離聚類法進行聚類分析
print1.m——調用各子函數,顯示聚類結果
聚類分析算法
假設距離矩陣為vector, a階,矩陣中最大值為max,令矩陣上三角元素等于max
聚類次數=a-1,以下步驟作a-1次循環:
求改變后矩陣的階數,計作c
求矩陣最小值,返回最小值所在行e和列f以及值的大小g
forl=1:c,為vector(c+1,l)賦值,產生新類
令第c+1列元素,第e行和第f行所有元素為,第e列和第f列所有元素為max
源程序如下:
%std1.m,用極差標準化法標準化矩陣
function std=std1(vector)
max=max(vector); %對列求最大值
min=min(vector);
[a,b]=size(vector); %矩陣大小,a為行數,b為列數
for i=1:a
forj=1:b
std(i,j)= (vector(i,j)-min(j))/(max(j)-min(j));
end
end
%ds1.m,用絕對值法求距離
function d=ds1(vector);
[a,b]=size(vector);
d=zeros(a);
for i=1:a
forj=1:a
for k=1:b
d(i,j)=d(i,j)+abs(vector(i,k)-vector(j,k));
end
end
end
fprintf(‘絕對值距離矩陣如下:\n’);
disp(d)
%min1.m,求矩陣中最小值,并返回行列數及其值
function [v1,v2,v3]=min1(vector);%v1為行數,v2為列數,v3為其值
[v,v2]=min(min(vector’));
[v,v1]=min(min(vector));
v3=min(min(vector));
%min2.m,比較兩數大小,返回較小的值
function v1=min(v2,v3);
if v2>v3
v1=v3;
else
v1=v2;
end
%cluster.m,最短距離聚類法
function result=cluster(vector);
[a,b]=size(vector);
max=max(max(vector));
for i=1:a
for j=i:b
vector(i,j)=max;
end
end;
for k=1:(b-1)
[c,d]=size(vector);
fprintf(‘第%g次聚類:\n’,k);
[e,f,g]=min1(vector);
fprintf(‘最小值=%g,將第%g區和第%g區并為一類,記作G%g\n\n’,g,e,f,c+1);
forl=1:c
ifl<=min2(e,f)
vector(c+1,l)=min2(vector(e,l),vector(f,l));
else
vector(c+1,l)=min2(vector(l,e),vector(l,f));
end
end;
vector(1:c+1,c+1)=max;
vector(1:c+1,e)=max;
vector(1:c+1,f)=max;
vector(e,1:c+1)=max;
vector(f,1:c+1)=max;
end
%print1,調用各子函數
function print=print1(filename,a,b); %a為地區個數,b為指標數
fid=fopen(filename,’r’)
vector=fscanf(fid,’%g’,[a b]);
fprintf(‘標準化結果如下:\n’)
v1=std1(vector)
v2=ds1(v1);
cluster(v2);
%輸出結果
print1(‘fname’,9,7)
2.直接調用Matlab函數實現
2.1調用函數
層次聚類法(Hierarchical Clustering)的計算步驟:
①計算n個樣本兩兩間的距離{dij},記D
②構造n個類,每個類只包含一個樣本;
③合并距離最近的兩類為一新類;
④計算新類與當前各類的距離;若類的個數等于1,轉到5);否則回3);
⑤畫聚類圖;
⑥決定類的個數和類;
Matlab軟件對系統聚類法的實現(調用函數說明):
cluster 從連接輸出(linkage)中創建聚類
clusterdata 從數據集合(x)中創建聚類
dendrogram 畫系統樹狀圖
linkage 連接數據集中的目標為二元群的層次樹
pdist計算數據集合中兩兩元素間的距離(向量)
squareform 將距離的輸出向量形式定格為矩陣形式
zscore 對數據矩陣 X 進行標準化處理
各種命令解釋
⑴ T =clusterdata(X, cutoff)
其中X為數據矩陣,cutoff是創建聚類的臨界值。即表示欲分成幾類。
以上語句等價與以下幾句命令:
Y=pdist(X,’euclid’)
Z=linkage(Y,’single’)
T=cluster(Z,cutoff)
以上三組命令調用靈活,可以自由選擇組合方法!
⑵ T =cluster(Z, cutoff)
從逐級聚類樹中構造聚類,其中Z是由語句likage產生的(n-1)×3階矩陣,cutoff是創建聚類的臨界值。
⑶ Z = linkage(Y) Z = linkage(Y, ‘method’)
創建逐級聚類樹,其中Y是由語句pdist產生的n(n-1)/2 階向量,’method’表示用何方法,默認值是歐氏距離(single)。有’complete’——最長距離法;‘average’——類平均距離;‘centroid’——重心法 ;‘ward‘——遞增平方和等。
⑷ Y = pdist(X) Y = pdist(X,’metric’)
計算數據集X中兩兩元素間的距離, ‘metric’表示使用特定的方法,有歐氏距離‘euclid’、標準歐氏距離‘SEuclid’、馬氏距離‘mahal’、明可夫斯基距離‘Minkowski‘ 等。
⑸ H = dendrogram(Z) H =dendrogram(Z, p)
由likage產生的數據矩陣z畫聚類樹狀圖。P是結點數,默認值是30。
2.2舉例說明
設某地區有八個觀測點的數據,樣本距離矩陣如表1所示,根據最短距離法聚類分析。
%最短距離法系統聚類分析
X=[7.90 39.77 8.49 12.94 19.27 11.05 2.04 13.29;
7.6850.37 11.35 13.3 19.25 14.59 2.75 14.87;
9.4227.93 8.20 8.14 16.17 9.42 1.55 9.76;
9.1627.98 9.01 9.32 15.99 9.10 1.82 11.35;
10.0628.64 10.52 10.05 16.18 8.39 1.96 10.81];
BX=zscore(X);%標準化數據矩陣
Y=pdist(X)%用歐氏距離計算兩兩之間的距離
D=squareform(Y)%歐氏距離矩陣
Z = linkage(Y)%最短距離法
T = cluster(Z,3)%等價于{T=clusterdata(X,3) }
find(T==3)%第3類集合中的元素
[H,T]=dendrogram(Z) %畫聚類圖
聚類譜系圖如圖1所示:
圖1 聚類譜
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...
在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...
在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...
移動4g套餐哪個最劃算?8元天悅卡套餐最最合算8元天悅卡,月租8元,乾坤二卦30分鐘通話費,1元500M流量,自動續費,不用什么不花錢多。但,這個套餐好像老用戶肯定不能申請辦理。在網上有各種攻略這個可以做個參考,很多網友申請辦理成功了。我感覺這個套餐最合算,而且更適合保號,等待“攜號轉網”的用戶三大運營商4g套餐對比,哪一個更劃算?以貴州聯通為例,我公司有所推出4G全國組合套餐,里面乾坤二卦有流量...
怎么成為淘寶金牌賣家?獎牌賣家的基本條件有以下以下幾點:信用度最少一個站,15克黃油消費者購買基本保障最新計劃,店面21秒大于等于183天;5克白糖消保,這個現在已經不用擔心了以前淘寶天貓已經打開了全網第一消保計劃;開店43秒,這是人力物力不能整體控制的,除非直接買個淘寶網店。如何申請淘寶金牌賣家?遞交申請淘寶奧運金牌淘寶賣家的常見方法見下文淘寶店要繳交淘寶網保證金,開店把時間必須在183天以上,...
用XFire的方式調用WebService接口Spring沒有注入bean,導致調用接口方法時用到的dao接口沒有實例化?這應該是服務器的問題,與客戶端無關。初始化appuserservice后應啟動WebService。因此,配置自動掃描時,應注意順序。此外,請檢查appuserservice是否正確添加了批注并配置了自動掃描。Xfire是什么?Xfire是Java實現WebService的框架...