K-means聚類 的 Python 實現【圖文解釋】

K-means聚類是一個聚類演算法用來將

n 個點分成 k 個集群。

演算法有3步:

1.初始化– K 個初始質心會被隨機生成

2.分配 – K 集群通過點關聯到最近的初始質心生成

3.更新 –重新計算k個集群對應的質心

分配和更新會一直重複執行直到質心不再發生變化。

最後的結果是點和質心之間的均方差達到最小。

以 k=3 為例演示這個過程:

1.初始化

分配:

更新:

重新分配:

可以看到一個紅色的點,變成了綠色的;一個藍色的點變成了紅色的。

我們更加接近最終目標了。

現在重複這個過程,直到每一個集群都沒有變化為止。

繼續這個過程:

現在得到3個清晰地集群和3個質點在這三個集群的中間。

結論:

1.k-means 可以嘗試不同的初始化質點來獲取更好的 label.

2.如果數據集有一定的對稱性,一些數據可能會被錯誤的標記。

3.k-means 依賴歐氏距離,所以對尺度非常敏感,所以如果存在縮放問題,要對數據進行歸一化處理。

英文原文的代碼可以複製,還有 scikit-learn 版實現。

英文原文:K-means Clustering in Python

機器學習:TensorFlow 安裝,TensorFlow 教程,TensorFlowNews 原創人工智慧,機器學習,深度學習,神經網路,計算機視覺,自然語言處理項目分享。

TensorFlow QQ 群:522785813

PyTorch QQ 群:518428276


推薦閱讀:

評論上的情感分析:主題與情感詞抽取
TensorFlow(1)-AlexNet實現
FaceRank-人臉打分基於 TensorFlow 的 CNN 模型,這個妹子顏值幾分? FaceRank 告訴你!
Fully-Convolutional Siamese Networksfor Object Tracking 翻譯筆記

TAG:机器学习 | TensorFlow | 聚类算法 |