matlab實現Kmeans聚類算法_第1頁
matlab實現Kmeans聚類算法_第2頁
matlab實現Kmeans聚類算法_第3頁
matlab實現Kmeans聚類算法_第4頁
matlab實現Kmeans聚類算法_第5頁
免費預覽已結束,剩余4頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、題目:matlab實現Kmeans聚類算法姓名背景知識1.簡介:Kmeans算法是一種經典的聚類算法,在模式識別中得到了廣泛的應用,基于Kmeans的變種算法也有很多,模糊Kmeans分層Kmeans等。Kmean/口應用于混合高斯模型的受限EM算法是一致的。高斯混合模型廣泛用于數據挖掘、模式識別、機器學習、統計分析。Kmeans的迭代步驟可以看成E步和M步,E:固定參數類別中心向量重新標記樣本,M固定標記樣本調整類別中心向量。K均值只考慮(估計)了均值,而沒有估計類別的方差,所以聚類的結構比較適合于特征協方差相等的類別。Kmean碓某種程度也可以看成MeansMtf的特殊版本,Meanshi

2、ft是一種概率密度梯度估計方法(優點:無需求解出具體的概率密度,直接求解概率密度梯度。),所以Meanshift可以用于尋找數據的多個模態(類別),利用的是梯度上升法。在06年的一篇CVP就章上,證明了Meanshift方法是牛頓拉夫遜算法的變種。Kmeans和EM算法相似是指混合密度的形式已知(參數形式已知)情況下,利用迭代方法,在參數空間中搜索解。而Kmeans和Meanshift相似是指都是一種概率密度梯度估計的方法,不過是Kmea砒用的是特殊的核函數(uniformkernel),而與混合概率密度形式是否已知無關,是一種梯度求解方式。k-means是一種聚類算法,這種算法是依賴于點的鄰

3、域來決定哪些點應該分在一個組中。當一堆點都靠的比較近,那這堆點應該是分到同一組。使用k-means,可以找到每一組的中心點。當然,聚類算法并不局限于2維的點,也可以對高維的空間(3維,4維,等等)的點進行聚類,任意高維的空間都可以。上圖中的彩色部分是一些二維空間點。上圖中已經把這些點分組了,并使用了不同的顏色對各組進行了標記。這就是聚類算法要做的事情。這個算法的輸入是:1:點的數據(這里并不一定指的是坐標,其實可以說是向量)2:K,聚類中心的個數(即要把這一堆數據分成幾組)所以,在處理之前,你先要決定將要把這一堆數據分成幾組,即聚成幾類。但并不是在所有情況下,你都事先就能知道需要把數據聚成幾類

4、的。但這也并不意味著使用k-means就不能處理這種情況,下文中會有講解。把相應的輸入數據,傳入k-means算法后,當k-means算法運行完后,該算法的輸出是:1:標簽(每一個點都有一個標簽,因為最終任何一個點,總會被分到某個類,類的id號就是標簽)2:每個類的中心點。標簽,是表示某個點是被分到哪個類了。例如,在上圖中,實際上有4中“標簽”,每個“標簽”使用不同的顏色來表示。所有黃色點我們可以用標簽0表示,所有橘色點可以用標簽1來表示,等等。在本文中,使用上圖的二維坐標(x,y)向量為數據集。假設我們要將這些點聚成5類,即k=5。我們可以看出,有3個類離的比較遠,有兩個類離得比較近,幾乎要

5、混合在一起了。當然,數據集不一定是坐標,假如你要對彩色圖像進行聚類,那么你的向量就可以是(b,g,r),如果使用的是hsv顏色空間,那還可以使用(h,s,v),當然肯定可以有不同的組合例如(b*b,g*r,r*b),(h*b,s*g,v*v)等等。在本文中,初始的類的中心點是隨機產生的。如上圖的紅色點所示,是本文隨機產生的初始點。注意觀察那兩個離得比較近的類,它們幾乎要混合在一起,看看算法是如何將它們分開的。類的初始中心點是隨機產生的。算法會不斷迭代來矯正這些中心點,并最終得到比較靠近真實中心點的一組中心點。當然,最終的結果不一定就是真實的那一組中心點,算法會盡量向真實的靠近。每個點(除了中心

6、點的其他點)都計算與5個中心點的距離,選出一個距離最小的(例如該點與第2個中心點的距離是5個距離中最小的),那么該點就歸屬于該類.上圖是點的歸類結果示意圖.經過步驟3后,每一個中心center(i)點都有它的“管轄范圍”,由于這個中心點不一定是這個管轄范圍的真正中心點,所以要重新計算中心點,計算的方法有很多種,最簡單的一種是,直接計算該管轄范圍內所有點的均值,做為心的中心點new_center(i).如果重新計算的中心點new_center(i)與原來的中心點centei)的距離大于一定的閾值(該閾值可以設定),那么認為算法尚未收斂,使用new_center(i)代替centei)(如圖,中心

7、點從紅色點轉移到綠色點),轉步驟3;否則,認為算法已經收斂,則new_center(i)就是最終的中心點。現在,所有的中心都不再移動,即算法已經收斂。當然,也許這些中心點還沒有達到你要的精度,由于計算這些中心點的準確性,會受初始中心點設置的影響。所以,如果初始中心設置的很糟糕,那么得出來的結果也會不理想。可以從K=1開始,并且k值不斷的增加,通常,隨著k的增加,類中的方差會急劇的下降,當k達到一定大的時候,方差的下降會明顯減慢(至于慢道何種程度,可以設閾值),此時,就選取到了最佳的k值。如果初始值沒設置好,肯定也不能獲得理想的聚類效果。針對這種情況,這里提供兩種方法:隨機的選取多組中心點,在每

8、一組中心點上,都把kmeans算法運行一次。最后,在選取類間方差最小的一組。通過設定的選初始值方法(這里提供一種,當然自己也可以去構想其他的方法).在數據集上隨機選擇一個點,做為第一個中心點;2:在數據集上,選取離第一個中心點最遠的一個點做為第二個中心點。3:在數據集上,選取離第一個和第二個中心最遠的點,做為第三個中心。1 4:依此計算后續的中心點.數據來源描述本次數據挖掘實驗的數據源來自加州大學計算機與信息院,是用于合成控制圖時間序列聚類分析的一組數據。數據集中一共包含600組數據,每一組數據都有60個分量,也就是數據是60維的。數據一共可以分成6個聚類,分別是:1-100Normal(正常

9、)101-200Cyclic(循環)201-300Increasingtrend(增加趨勢)301-400Decreasingtrend(減少趨勢)401-500Upwardshift(上升變化)2 501-600Downwardshift(下降變化).數據預處理由于本數據集的數據維數較多,所以本實驗采用了結構體來存儲60維的數據,并使用指針來進行對數據的操作,以提高速度。在數據預處理過程中,首先將數據從data文件中讀出,后依次存入結構體數組dataset600中。3 .k-means聚類算法k-means算法接受參數k;然后將事先輸入的n個數據對象劃分為k個聚類以便使得所獲得的聚類滿足:同

10、一聚類中的對象相似度較高;而不同聚類中的對象相似度較小。聚類相似度是利用各聚類中對象的均值所獲得一個“中心對象”(引力中心)來進行計算的。K-means算法是最為經典的基于劃分的聚類方法,是十大經典數據挖掘算法之一。K-means算法的基本思想是:以空間中k個點為中心進行聚類,對最靠近他們的對象歸類。通過迭代的方法,逐次更新各聚類中心的值,直至得到最好的聚類結果。(1)算法思路:首先從n個數據對象任意選擇k個對象作為初始聚類中心;而對于所剩下其它對象,則根據它們與這些聚類中心的相似度(距離),分別將它們分配給與其最相似的(聚類中心所代表的)聚類;然后再計算每個所獲新聚類的聚類中心(該聚類中所有

11、對象的均值);不斷重復這一過程直到標準測度函數開始收斂為止。一般都采用均方差作為標準測度函數.k個聚類具有以下特點:各聚類本身盡可能的緊湊,而各聚類之間盡可能的分開。該算法的最大優勢在于簡潔和快速。算法的關鍵在于初始中心的選擇和距離公式。(2)算法步驟:step.1-初始化距離K個聚類的質心(隨機產生)step.2-計算所有數據樣本與每個質心的歐氏距離,將數據樣本加入與其歐氏距離最短的那個質心的簇中(記錄其數據樣本的編號)step.3-計算現在每個簇的質心,進行更新,判斷新質心是否與原質心相等,若相等,則迭代結束,若不相等,回到step2繼續迭代。Matlab代碼:functionkm(k,A

12、)%函數名里不要出現"-"X=randn(100,2).*100;.randn(100,2)*200;randn(100,2).*300;.randn(100,2)*400;randn(100,2).*500;randn(100,2).*600;opts=statset('Display','final');idx,ctrs=kmeans(X,6,Distance'Replicates''Optionsplot(X(idx=1,1),X(idx=1,2),holdonplot(X(idx=2,1),X(idx=2,2)

13、,holdonplot(X(idx=3,1),X(idx=3,2),holdonplot(X(idx=4,1),X(idx=4,2),holdonplot(X(idx=5,1),X(idx=5,2),holdonplot(X(idx=6,1),X(idx=6,2),title('bfKmeanscity',.,5,.,opts);'r.','MarkerSize',12)'b.','MarkerSize',12)'m.','MarkerSize',12)'g.',&#

14、39;MarkerSize',12)'k.','MarkerSize',12)'c.','MarkerSize',12)聚類算法圖像')plot(ctrs(:,1),ctrs(:,2),plot(ctrs(:,1),ctrs(:,2),plot(ctrs(:,1),ctrs(:,2),plot(ctrs(:,1),ctrs(:,2),plot(ctrs(:,1),ctrs(:,2),plot(ctrs(:,1),ctrs(:,2),'kx','MarkerSize',12,'

15、LineWidth',2)'ko','MarkerSize',12,'LineWidth',2)'kx','MarkerSize',12,'LineWidth',2)'kx','MarkerSize',12,'LineWidth',2)'kx','MarkerSize',12,'LineWidth',2)'kx','MarkerSize',12,'LineW

16、idth',2)plot(ctrs(:,1),ctrs(:,2),'kx','MarkerSize',12,'LineWidth',2)legend('Cluster1','Cluster2','Cluster3','Cluster4','Cluster5''Cluster6','Centroids','Location','NW)15iterations,totalsumofdistances=1889

17、4728iterations,totalsumofdistances=17870912iterations,totalsumofdistances=18405514iterations,totalsumofdistances=18264212iterations,totalsumofdistances=1783571500WOO5C00-SCO-10CO-15C0-1500-WOO-5000500100015302000K陽4M聚類算法圖像*Cluster1*Clcster2*Cluster3Cluster4*Clusler5ClusterBXCentroidsPublishedwithMATLAB?7.7.分析方法點估計、區間估計、回歸分析、假設檢驗、聚類分析、判別分析、因素分析和主成分

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論