kmeans均值聚類演算法實現

2021-09-25 06:37:16 字數 1203 閱讀 1729

這個演算法中文名為k均值聚類演算法,首先我們在二維的特殊條件下討論其實現的過程,方便大家理解。

由於這是乙個無監督學習的演算法,因此我們首先在乙個二維的座標軸下隨機給定一堆點,並隨即給定兩個質心,我們這個演算法的目的就是將這一堆點根據它們自身的座標特徵分為兩類,因此選取了兩個質心,什麼時候這一堆點能夠根據這兩個質心分為兩堆就對了。如下圖所示:

紅色和藍色的點代表了我們隨機選取的質心。既然我們要讓這一堆點的分為兩堆,且讓分好的每一堆點離其質心最近的話,我們首先先求出每乙個點離質心的距離。假如說有乙個點離紅色的質心比例藍色的質心更近,那麼我們則將這個點歸類為紅色質心這一類,反之則歸於藍色質心這一類,如圖所示:

在這一步當中,我們將同一類點的x\y的值進行平均,求出所有點之和的平均值,這個值(x,y)則是我們新的質心的位置,如圖所示:

我們可以看到,質心的位置已經發生了改變。

我們重複第二步和第三部的操作,不斷求出點對質心的最小值之後進行分類,分類之後再更新質心的位置,直到得到迭代次數的上限(這個迭代次數是可以我們自己設定的,比如10000次),或者在做了n次迭代之後,最後兩次迭代質心的位置已經保持不變,如下圖所示:

這個時候我們就將這一堆點按照它們的特徵在沒有監督的條件下,分成了兩類了!!

首先我們引入乙個概念,那就是歐式距離,歐式距離是這樣定義的,很容易理解:

很顯然,歐式距離d(xi,xj)等於我們每乙個點的特徵去減去另乙個點在該維度下的距離的平方和再開根號,十分容易理解。

我們也可以用另一種方式來理解kmeans演算法,那就是使某乙個點的和另一些點的方差做到最小則實現了聚類,如下圖所示:

K均值 K means 聚類演算法

j.b.macqueen 在 1967 年提出的k means演算法 22 到目前為止用於科學和工業應用的諸多聚類演算法中一種極有影響的技術。它是聚類方法中乙個基本的劃分方法,常常採用誤差平方和準則函式作為聚類準則函式,誤差平方和準則函式定義為 3 1 其中,是類 中資料物件的均值,即 j 1,2,...

K 均值聚類演算法 K means

k means是一種無監督的學習,將相似的物件歸到同乙個簇中.可以將一批資料分為k個不同的簇,並且每個簇的中心採用簇中所含樣本的均值計算而成.k means演算法的k值需要由使用者指定,演算法開始時隨機選擇k個初始點作為質心,然後將資料集中的每個點分配到乙個簇中.那麼,如何確定某一組資料歸於哪個簇中...

K均值聚類演算法 K Means

將資料集中的資料按照距離質心的遠近分到各個簇中 將各個簇中的資料求平均值,作為新的質心,重複上一步,直到所有的簇不再改變 from numpy import defloaddataset filename dataset f open filename for line in f.readlines...