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 | 聚类算法 |