MATLAB K-means聚类代码讲解
生活随笔
收集整理的這篇文章主要介紹了
MATLAB K-means聚类代码讲解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、概述
K-means聚類采用類內距離和最小的方式對數據分類,MATLAB中自帶K-means算法,最簡單的調用如下:
idx=kmeans(x,k)將n-by-p數據矩陣x中的數據劃分為k個類簇。x的行對應數據條數,x的列對應數據的維度。注意:當x是向量時,kmeans將其視為n乘1數據矩陣,而不管其方向如何。kmeans返回一個n乘1向量idx,其中包含每個點的簇索引。默認情況下,kmeans使用平方歐氏距離。
二、K-means參數
典型的帶參數的K-means調用如下:
[ ... ] = kmeans(..., 'PARAM1',val1, 'PARAM2',val2, ...)由param和val構成參數鍵值對進行控制,常用的參數有:
1 'Distance' - 距離度量, 在P維空間中,K-means應該最小化的距離度量
- 'sqeuclidean' ?- 平方歐氏距離(默認值)
- 'cityblock'? ? ? ?- 絕對差之和,即L1距離
- 'cosine'? ? ? ? ? - 1減去點之間夾角的余弦
- 'correlation'? ? - 1減去點之間的樣本相關性
- ?'hamming' ? ? ?- 不同位的百分比
2 'Start' - 選擇初始簇質心位置的方法
- 'plus' ? ?- 默認值。根據k-means++算法從X中選擇K個觀測值。第一個聚類中心從X中隨機地選擇,然后從剩余的數據點隨機地選擇每個后續的聚類中心,其概率與距離最近的現有聚類中心的距離成比例。
- 'sample' ?- 隨機從X中選擇K個觀測值.
- 'uniform' - 從X的分布范圍內隨機均勻地選擇K個點。對于hamming距離無效。
- 'cluster' - 對X的隨機10%子樣本執行初步聚類階段。此初步階段本身使用“sample”初始化
- matrix ? - 用一個K行P列的矩陣作為初始聚類中心
3 'Replicates' - 重復聚類的次數,每個聚類都有一組新的初始質心,默認為1。
4 'EmptyAction'- 在聚類過程中一個類別丟失了它所有的成員時,需要采用的措施
- ?'singleton' - 創建一個新類簇,該簇由距離其質心最遠的一個觀測組成(默認值)
- 'error' ? ? - 空類別作為錯誤處理.
- 'drop' ? ? ?- 刪除所有變為空的類簇,并將C和D中的相應值設置為NaN.
5??'Options' - 用于最小化擬合準則的迭代算法的選項, 用statset構建,statset傳入的參數包括:
- 'Display' ?- 顯示輸出的層級。可選 'off', 'iter',?'final'. 其中默認是選擇'off'
- 'MaxIter' ?- 最大的迭代次數. 默認100次.
- 'UseParallel' ?- 選擇為‘true’或者‘default’,進行并行計算。前提是需要打開并行計算工具箱的parpool,否則設置為默認值‘default’,表示串行計算。
- ?'UseSubstreams' ?- 設置為true以可重復的方式并行計算。默認值為false。要重復計算,設置為允許子流的類型:“mlfg6331_64”或“mrg32k3A”.
- ?'Streams' ?- 如果“useParallel”為true,“useSubstreams”為false,則“streams”的長度必須等于KMeans使用的工作線程數。如果并行池已打開,則此將是并行池的大小.?
三、帶參調用示例
一個例子來描述Kmeans如何帶參調用。例如以下代碼:
最大迭代100000次,采用1-相關性系數作為距離,對數據進行聚類分析。
K=6; opts = statset('Display','final','MaxIter',100000); [Idx,C,sumD,D1]=kmeans(dataStandardlized,K,'dist','correlation','Options',opts);- dataStandardlized :N*P的輸入數據矩陣
- K: 表示將dataStandardlized劃分為幾類,為整數
- Idx :N*1的向量,存儲的是每個點的聚類標號
- C: K*P的矩陣,存儲的是K個聚類質心位置
- sumD: 1*K的和向量,存儲的是類間所有點與該類質心點距離之和
- D1: N*K的矩陣,存儲的是每個點與所有質心的距離
其他:
- 官方資料:https://ww2.mathworks.cn/help/stats/kmeans.html
------分享知識,讓人愉悅,原創博文,支持請點贊。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的MATLAB K-means聚类代码讲解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ACDSee QuickView(图片浏
- 下一篇: VS2013密钥 VS2013专业版密钥