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