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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MATLAB K-means聚类代码讲解

發布時間:2023/12/10 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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聚类代码讲解的全部內容,希望文章能夠幫你解決所遇到的問題。

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