k means演算法及opencv實現

2021-08-28 07:19:23 字數 1128 閱讀 9681

k-means演算法是最為經典的基於劃分的聚類方法,是十大經典資料探勘演算法之一。k-means演算法的基本思想是:以空間中k個點為中心進行聚類,對最靠近他們的物件歸類。通過迭代的方法,逐次更新各聚類中心的值,直至得到最好的聚類結果。

假設要把樣本集分為c個類別,演算法描述如下:

(1)適當選擇c個類的初始中心;

(2) 在第k次迭代中,對任意一樣本,求其到c個中心的距離,將其歸類到距離最短的中心所在的類;

(3) 利用均值等方法更新該類的中心值;

(4) 重複步驟(2)(3),直到聚類中心保持不變。

k-means在opencv中的實現:

void kmeans_mat(const mat& src_img,mat& dst_img)

}

int ncuster=2;//聚類類別數,自己修改。

//聚類,kmeans pp centers use kmeans++ center initialization by arthur and vassilvitskii

kmeans(samples,ncuster,clusters,termcriteria(cv_termcrit_eps+cv_termcrit_iter,10,1.0),2,kmeans_pp_centers);

//顯示聚類結果

if (dst_img.empty())

k=0;

int val=0;

float step=255/(ncuster-1);

for (int i=0;i

}

}

k-means聚類演算法,初始中心的選擇是關鍵,有時間還需要研究下kmeans_pp_centers use kmeans++ center initialization by arthur and vassilvitskii方法。

opencv之kmeans聚類演算法

k means演算法算是個著名的聚類演算法了,不僅容易實現,並且效果也不錯,訓練過程不需人工干預,實乃模式識別等領域的居家必備良品啊,今天就拿這個演算法練練手。總結來說,這個演算法的步驟如下 kmeans是非常經典的聚類演算法,至今也還保留著較強的生命力,影象處理中經常用到kmeans演算法或者其改...

k means演算法及改進

k means是最常用的聚類演算法 k means演算法流程 1 選擇k個類為初始中心 2 在第i次迭代中,對任意樣本,計算其到各中心的距離,將樣本歸到距離最短的中心所在的類 3 利用均值等方法更新類的中心值 4 對於聚類中心,經過2 3 迭代後,值保持不變,迭代結束,否則繼續迭代。k means偽...

Kmeans演算法及相關優化

1 kmeans演算法是一種無監督聚類演算法。2 演算法的目標 給定樣本集,根據樣本之間的距離大小,將樣本劃分為k個簇,讓簇內的點之間的距離盡可能近,讓簇間的點的距離盡可能的遠。3 演算法的思路 在給定k值和k個初始類簇中心點的情況下,把每個點 樣本資料 分到距離最近的類簇中心點代表的類簇中。分配完...