1. 程式人生 > >第十篇:K均值聚類(KMeans)

第十篇:K均值聚類(KMeans)

步驟 中國 小結 logo kmeans 實現 調整 r語言 img

前言

本文講解如何使用R語言進行 KMeans 均值聚類分析,並以一個關於人口出生率死亡率的實例演示具體分析步驟。

聚類分析總體流程

1. 載入並了解數據集;
2. 調用聚類函數進行聚類;
3. 查看聚類結果描述;
4. 將聚類結果圖形化展示;
5. 選擇最優center並最終確定聚類方案;
6. 圖形化展示不同方案效果並提交分析報表。

人口出生/死亡率聚類分析 - K均值聚類

1. 載入並了解數據集

1.1 從網上下載一份txt格式的關於人口出生率統計的數據(countries.txt)。其內容大致如下:

技術分享

1.2 載入數據集countries.txt:

技術分享

1.3 查看相關文件信息,如維度,文件具體內容:

技術分享

1.4 給數據集行列改名,並查看改名後的結果:

技術分享

1.5 畫出所有樣本點:

技術分享

2. 調用聚類函數進行聚類

技術分享

kmeans 函數的原型為:kmeans (x, centers, iter.max=10, nstart=1, alogorithm=c("Hartigan-Wong", "Lloyd", "For-gy", "MacQueen"))。

這裏解釋下函數 kmeans 中的幾個形參:

- x:進行聚類分析的數據集;
- centers:簇個數;
- iter.max:最大叠代次數;
- nstart:選擇隨機中心點的次數 (選擇結果最優的那次隨機質心);
- alogorithm:具體實現算法。默認為Hartigan-Wong。

3. 查看聚類結果

技術分享

結果內容從上至下分別為:

- 每個簇的樣本數;
- 每個簇的質心;
- 每個樣本的聚類結果;
- 本次聚類的相關統計信息:包含組內平方和,總平方和,組間平方和,以及組間平方和/總平方和。顯然它越大越好;
- 最下面的那部分是指聚類結果數據集fit_km1中的各個變量(也即上面的那些信息,如fit_km1$size就等於3)。

4. 將聚類結果圖形化展示

技術分享

技術分享

5. 選擇最優center並最終確定聚類方案

技術分享

很顯然,當k超過了8之後,聚類的結果波動就不大了。

可做圖形象化的展示此現象:

技術分享

技術分享

6. 用 k=8 進行聚類,然後看看和中國屬於一類的國家有哪些。

技術分享

小結

除了 k 的大小,還可以通過調整叠代次數、選擇中心點次數、重新實現算法等方式實現最優聚類。

另外,本文所講的只是最為經典的KMeans聚類,更多更好玩的聚類算法,請查閱相關論文或相關R語言包的說明文檔。

第十篇:K均值聚類(KMeans)