【机器学习】K-Means算法的原理流程、代码实现及优缺点
分類是根據樣本某些屬性或某類特征(可以融合多類特征),把樣本類型歸為已確定的某一類別中。機器學習中常見的分類算法有:SVM(支持向量機)、KNN(最鄰近法)、Decision Tree(決策樹分類法)、Naive Bayes(樸素貝葉斯分類)、Neural Networks(神經網絡法)等。
而分類作為一種監督學習方法,需要事先知道樣本的各種類別信息。因此當對海量數據進行分類時,為了降低數據滿足分類算法要求所需要的預處理代價,往往需要選擇非監督學習的聚類算法。
K-Means Clustering(K均值聚類),就是最典型的聚類算法之一,接下來一起進行該算法的學習。
1、K-Means算法原理
K-Means算法思想:對給定的樣本集,事先確定聚類簇數K,讓簇內的樣本盡可能緊密分布在一起,使簇間的距離盡可能大。該算法試圖使集群數據分為n組獨立數據樣本,使n組集群間的方差相等,數學描述為最小化慣性或集群內的平方和。K-Means作為無監督的聚類算法,實現較簡單,聚類效果好,因此被廣泛使用。
2、K-Means步驟及流程
2.1、算法步驟
輸入:樣本集D,簇的數目k,最大迭代次數N;
輸出:簇劃分(k個簇,使平方誤差最小);
算法步驟:
(1)為每個聚類選擇一個初始聚類中心;
(2)將樣本集按照最小距離原則分配到最鄰近聚類;
(3)使用每個聚類的樣本均值更新聚類中心;
(4)重復步驟(2)、(3),直到聚類中心不再發生變化;
(5)輸出最終的聚類中心和k個簇劃分;
2.2、流程框圖:
3、K-Means代碼實現
Python代碼實現請參考:python 實現周志華 機器學習書中 k-means 算法;
Matlab代碼實現請參考:https://blog.csdn.net/u010248552/article/details/78476934?locationNum=8&fps=1;
C#代碼實現請參考:https://www.cnblogs.com/gaochundong/p/kmeans_clustering.html;
4、K-Means算法優缺點
4.1、優點
(1)原理易懂、易于實現;
(2)當簇間的區別較明顯時,聚類效果較好;
4.2、缺點
(1)當樣本集規模大時,收斂速度會變慢;
(2)對孤立點數據敏感,少量噪聲就會對平均值造成較大影響;
(3)k的取值十分關鍵,對不同數據集,k選擇沒有參考性,需要大量實驗;
5、參考資料
1、簡單易學的機器學習算法——K-Means算法;
2、k-means 的原理,優缺點以及改進;
總結
以上是生活随笔為你收集整理的【机器学习】K-Means算法的原理流程、代码实现及优缺点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【机器学习】最近邻算法KNN原理、流程框
- 下一篇: 基于Spatial CNN的车道线检测和