深入理解Kmeans算法

導言

Hello,各位信息工程的小夥伴們,是不是感覺課程難度比較大,理解算法不夠深入呢。歡迎加入AI破冰學院,QQ羣463986237,喜歡人工智能,大數據的同學歡迎入羣。接下來的時間呢,作者大大會陸續發表作業的算法題目和理解思想,都是作者大大精心整理打出來的哦,不喜勿噴,輔助大家完成作業,敬請期待。

什麼是Kmeans算法

Kmeans算法,顧名思義,k均值算法。是十種經典的機器學習算法之一,什麼是機器學習,請看我上一篇文章人工智能。它是無監督學習的一種聚類算法,即知道要劃分幾堆數據,把這些數據劃分出來。
廢話不多說,直接上乾貨。

1.假如我拿到了一個數據,假如是2維的(可以可視化),咋們作業是三維的,不過都一樣,一共在空間中有3堆。
在這裏插入圖片描述
2.然後我要隨機在這個平面中取3箇中心點(隨機的哦,我們要分爲3堆,所以取3個點,不同顏色代表不同類別的數據),然後遍歷空間中的每一個點 , 分別求到這3個點的歐式距離d,它離哪個中心點最近,就被劃分爲哪個區域(圖中不同顏色分出來的不同類別)
計算方法在這裏插入圖片描述
在這裏插入圖片描述
3.接線來就要更新中心點了,把剛纔劃分出3類,每個類裏面的點的 x,y,分別求平均值,比如剛纔劃分爲紅色的點,X = (x1+x2…+xn)/n , Y = (y1+y2+…yn)/n ,這個就是新的中心點,藍色,綠色的也一樣。
更新中心,重複步驟2重新劃分數據,如圖。

在這裏插入圖片描述
4.接線來一直重複2,3步驟,直到中心點收斂不會改變(聚類就完成了),在數學上證明得到,一直循環2,3步驟,中心點一定會收斂。得到最終數據,就可以把屬於各個顏色的點拿出來了

在這裏插入圖片描述

作業

回到作業上,咋們的作業拿到的是這樣的數據,很明顯這是一個三維的數據(把一行當做一個點),所以計算距離的時候有x,y,z。
1.首先需要讀入數據,創建一個數組保存國家名字,一個數組保存數據。
在這裏插入圖片描述
2.因爲數據不均衡,x,y,z三個值相差很大,所以我們要進行0-1均值化,把數據放縮到0-1區間,
對每一列數據每個元素用這個公式 min是這一列的最小值,max最大值,x是當前值,x*爲更新值。
在這裏插入圖片描述
最後得到數據爲這個全是0-1的值
在這裏插入圖片描述
3.然後進行kmeans算法計算,隨機在0-1取3箇中心點,注意是3維的點哦,建立一箇中心點數組
center =[ a類的中心,b類的中心,c類的中心]。
例如第一個點,x1 = (0.23,0.45,0.88),x2=…

4.然後遍歷圖中的點,判斷哪個中心點離這個點最近,建立三個數組(或者一個二維數組)distance=[ a類,b類,c類],分別存放分離某個中心點最近的點。

5.更新3箇中點center,方法:distance中某個類別的x,y,z求平均值,得到新的中心點center。

6.重複4,5步驟,直到中心點不變,取出所以distance的索引,帶入國家數組中。

最終結果
在這裏插入圖片描述

今天的算法就到這裏了,有什麼疑惑的同學可以加羣:463986237 ,大家一起學習一起討論,歡迎評論轉發,後續作者大大會繼續更新,記得關注哦,感謝支持!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章