matlab實現kmeans演算法

2021-07-02 13:24:53 字數 1136 閱讀 2447

kmeans是一種聚類演算法(無監督學習)。

演算法分為兩步:

1.隨機選取k個聚類中心。

2.計算每個樣本點離哪個聚類中心最近(距離計算)就將該樣本分為這個類。

3.重新計算這k個類的聚類中心。一種簡單的計算方法為:計算每個類的平均值即為新的聚類中心。重複執行步驟2,直到聚類中心的變化小於給定閾值,或者達到迭代次數,即停止聚類。

這裡只是簡單理解,並未深入去考慮k的選擇,初始聚類中心的選擇對演算法的影響。

下面給出乙個利用matlab自帶kmeans函式實現聚類的例項

close all;

clc;

x=[randn(100,2)*1e2;randn(100,2)*2e2;randn(100,2)*3e2;...

randn(100,2)*4e2;randn(100,2)*5e2;randn(100,2)*6e2];

figure,plot(x(:,1),x(:,2),'.');

[idx,ctrs]=kmeans(x,6);

figure,plot(x(idx==1,1),x(idx==1,2),'.r');

hold on

plot(x(idx==2,1),x(idx==2,2),'.b');

hold on

plot(x(idx==3,1),x(idx==3,2),'.m');

hold on

plot(x(idx==4,1),x(idx==4,2),'.g');

hold on

plot(x(idx==5,1),x(idx==5,2),'.k');

hold on

plot(x(idx==6,1),x(idx==6,2),'.c');

title('kmeans 聚類演算法')

plot(ctrs(:,1),ctrs(:,2),'xb');

plot(ctrs(:,1),ctrs(:,2),'ob');

實驗結果:

MATLAB2009A實現Kmeans例項

本人剛學習資料探勘沒有多久,資料探勘中要用不少聚類演算法。kmeans作為其中常用的一種演算法,聚類效果還行。下面是我做了幾個簡單的matlab實現kmeans的小例項 100 2列矩陣聚類成3類 matlab 如下 data rand 100,2 opts statset display fina...

Matlab實現k means聚類演算法

k means是聚類中的乙個十分經典的演算法,具體的思想可以參考andrew ng的講義 the k means clustering algorithm 這裡不再贅述。需要用到matlab中的核心函式kmeans,具體用法可以參考matlab命令 doc kmeans idx kmeans x,k...

kmeans聚類及Matlab實現

kmeans k均值聚類 是一種常用的聚類演算法,因其簡單且效能還算良好而受廣泛應用。kmeans聚類的中心思想是 確定k個類,計算模式特徵向量到每個聚類中心的 距離 將特徵向量歸併到距離最小的聚類中心所在的類中。把每一類的平均向量特徵的均值作為新的類心。最後,使得樣本與類均值的誤差平方和最小。步驟...