k-means是一種無監督的聚類演算法,也就是不給標籤,演算法自動來進行分類,最終分成k個簇。
輸入:k(簇的個數),訓練集(無標籤的樣本集合)
輸出:k個簇(k應該比樣本數量小)
1、隨機初始化k個均值向量(代表k個簇的中心),可以隨機選取k個訓練樣本作為初始均值向量。
2、開始迴圈:
1)對每個樣本進行遍歷,對於某乙個樣本x
ix_i
xi,分別求出到k個均值向量的距離,看離誰最近,就劃入那個簇中
2)然後重新計算每個簇的均值向量,得到新的簇中心,重複迴圈
3、直至簇不再發生變化
使得j最小。c
ic^i
ci表示第i
ii個樣本所屬簇的編號,μ
i\mu_i
μi表示第i
ii個簇的均值向量(簇中心)。
因此j就是求m個樣本離他們各自所屬簇的均值向量的距離,的和的平均值。
其實一種,演算法迴圈的第一步就是在minj,第二步就是在移動簇中心。
對於一開始的隨機初始化均值向量,可以多次執行,這樣就能避免陷入區域性最優。
這裡迴圈100次。最後在100次中,選擇代價最小的。
肘部法則:
隨著k的增大,相應cost的變化曲線,這樣可以得出在「肘部」,也就是k=3時,cost下降最快,之後的cost變化不明顯,就取k=3。
但是也有缺點,
曲線太平滑,找不到哪個是「肘部」。
或者就是根據經驗而定,例如t恤尺寸,看看是3類(s,m,l)還是5類(xs,s,m,l,xl)。
機器學習 K Means演算法
簡介 又叫k 均值演算法,是非監督學習中的聚類演算法。基本思想 k means演算法比較簡單。在k means演算法中,用cluster來表示簇 容易證明k means演算法收斂等同於所有質心不再發生變化。基本的k means演算法流程如下 選取k個初始質心 作為初始cluster,每個初始clus...
機器學習 KMeans學習筆記
機器學習 kmeans學習筆記 coding utf 8 spyder editor this is a temporary script file.from numpy import def loaddataset filename file open filename datamat for l...
(機器學習筆記2)K means演算法
k means演算法 機器學習常用的方法分為監督學習 非監督學習 分類 監督學習 已有的訓練樣本 得到訓練後的模型 未知資料輸入模型得到分類結果 knn 非監督學習 無訓練樣本 構建分類模型 k means k均值是發現給定資料集的k個簇的演算法。k為手動設定 可能不是最合適的,需要調整 每個簇用其...