日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

matlab 层次聚类

發布時間:2025/3/15 循环神经网络 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab 层次聚类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MATLAB的統計工具箱中的多元統計分析中提供了聚類分析的兩種方法:
1.層次聚類 hierarchical clustering

2.k-means聚類

這里用最簡單的實例說明以下層次聚類原理和應用發法。

層次聚類是基于距離的聚類方法,MATLAB中通過pdist、linkage、dendrogram、cluster等函數來完成。層次聚類的過程可以分這么幾步:

(1) 確定對象(實際上就是數據集中的每個數據點)之間的相似性,實際上就是定義一個表征對象之間差異的距離,例如最簡單的平面上點的聚類中,最經常使用的就是歐幾里得距離。

這在MATLAB中可以通過Y=pdist(X)實現,例如

>> X=randn(6,2) X =-0.4326 1.1892-1.6656 -0.03760.1253 0.32730.2877 0.1746-1.1465 -0.18671.1909 0.7258 >> plot(X(:,1),X(:,2),'bo') %給個圖,將來對照聚類結果把

````
Y=pdist(x)

Y =

1 至 14 列
0.7728 0.4994 0.9336 0.6606 0.3346 0.6789 0.2830 0.1381 0.7942 0.9444 0.5422 0.7887 0.4075 0.8513
15 列
0.7286
````
例子中X數據集可以看作包含6個平面數據點,pdist之后的Y是一個行向量,15個元素分別代表X的第1點與2-6點、第2點與3-6點,…這樣的距離。那么對于M個點的數據集X,pdist之后的Y

將是具有M*(M-1)/2個元素的行向量。Y這樣的顯示雖然節省了內存空間,但對用戶來說不是很易懂,如果需要對這些距離進行特定操作的話,也不太好索引。MATLAB中可以用squareform把Y轉換成方陣形式,方陣中<i,j>位置的數值就是X中第i和第j點之間的距離,顯然這個方陣應該是個對角元素為0的對稱陣。
squareform(Y)

ans =

0 0.7728 0.4994 0.9336 0.6606 0.3346 0.7728 0 0.6789 0.2830 0.1381 0.7942 0.4994 0.6789 0 0.9444 0.5422 0.7887 0.9336 0.2830 0.9444 0 0.4075 0.8513 0.6606 0.1381 0.5422 0.4075 0 0.7286 0.3346 0.7942 0.7887 0.8513 0.7286 0

這里需要注意的是,pdist可以使用多種參數,指定不同的距離算法。help pdist把。
另外,當數據規模很大時,可以想象pdist產生的Y占用內存將是很嚇人的,比如X有10k個數據點,那么X占10k82Bytes=160K,這看起來不算啥,但是pdist后的Y會有10k10k/28Bytes=400M。怕了把,所以,廢話說在前面,用MATLAB的層次聚類來處理大規模數據,大概是很不合適的。
確定好了對象間的差異度(距離)后,就可以用Z=linkage(Y)來產生層次聚類樹了。

>> Z=linkage(Y) >Z=linkage(Y)Z =2.0000 5.0000 0.13814.0000 7.0000 0.28301.0000 6.0000 0.33463.0000 9.0000 0.49948.0000 10.0000 0.5422

對于M個元素的X,前面說了Y是1行M*(M-1)/2的行向量,Z則是(M-1)*3的矩陣。
Z數組的前兩列是索引下標列,最后一列是距離列。例如上例中表示在產生聚類樹的計算過程中,第3和第4點先聚成一類,他們之間的距離是0.2228,以此類推。要注意的是,為了標記每一個節點,需要給新產生的聚類也安排一個標識,MATLAB中會將新產生的聚類依次用M+1,M+2,…依次來標識。比如第3和第4點聚成的類以后就用7來標識,第2和第5點聚成的類用8來標識,依次類推。
通過linkage函數計算之后,實際上二叉樹式的聚類已經完成了。Z這個數據數組不太好看,可以用dendrogram(Z)來可視化聚類樹。

可以看到,產生的聚類樹的每一層都是一個倒置的U型(或者說是個n型,~~),縱軸高度代表了當前聚類中兩個子節點之間的距離。橫軸上標記出了各個數據點索引下標。
稍微注意以下的是,dendrogram默認最多畫30個最底層節點,當然可是設置參數改變這個限制,比如dendrogram(Z,0)就會把所有數據點索引下標都標出來,但對于成千上萬的數據集合,這樣的結果必然是圖形下方非常擁擠。看你的應用目的了,隨你玩~

(3)初步的聚類樹畫完后,還要做很多后期工作的,包括這樣的聚類是不是可靠,是不是代表了實際的對象分化模式,對于具體的應用,應該怎樣認識這個完全版的聚類樹,產生具有較少分叉的可供決策參考的分類結果呢?這都是需要考慮的。

MATLAB中提供了cluster, clusterdata, cophenet, inconsistent等相關函數。

cluster用于剪裁完全版的聚類樹,產生具有一定cutoff的可用于參考的樹。
clusterdata可以認為是pdist,linkage,cluster的綜合,當然更簡易一點。
cophenet和inconsistent用來計算某些系數,前者用于檢驗一定算法下產生的二叉聚類樹和實際

情況的相符程度(就是檢測二叉聚類樹中各元素間的距離和pdist計算產生的實際的距離之間有

多大的相關性),inconsistent則是量化某個層次的聚類上的節點間的差異性(可用于作為

cluster的剪裁標準)。

總結

以上是生活随笔為你收集整理的matlab 层次聚类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。