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

穆晨發表於2017-05-20

前言

       本文講解如何使用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語言包的說明文件。

相關文章