本文講解如何使用R語言進行 KMeans 均值聚類分析,并以一個關于人口出生率死亡率的執行個體示範具體分析步驟。
前言
本文講解如何使用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語言包的說明文檔。