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