Mahout學習之聚類演算法Kmeans
一:kMeans演算法介紹
聚類分析是一種靜態資料分析方法,常被用於機器學習,模式識別,資料探勘等領域。通常認為,聚類是一種無監督式的機器學習方法,它的過程是這樣的:在未知樣本類別的情況下,通過計算樣本彼此間的距離(歐式距離,馬式距離,漢明距離,餘弦距離等)來估計樣本所屬類別。從結構性來劃分,聚類方法分為自上而下和自下而上兩種方法,前者的演算法是先把所有樣本視為一類,然後不斷從這個大類中分離出小類,直到不能再分為止;後者則相反,首先所有樣本自成一類,然後不斷兩兩合併,直到最終形成幾個大類。
常用的聚類方法主要有以下四種: //照搬的wiki,比較懶...
Connectivity based clustering (如hierarchical clustering 層次聚類法)
Centroid-based clustering (如kmeans)
Distribution-based clustering
Density-based clustering
Kmeans聚類是一種自下而上的聚類方法,它的優點是簡單、速度快;缺點是聚類結果與初始中心的選擇有關係,且必須提供聚類的數目。Kmeans的第二個缺點是致命的,因為在有些時候,我們不知道樣本集將要聚成多少個類別,這種時候kmeans是不適合的,推薦使用hierarchical 或meanshift來聚類。第一個缺點可以通過多次聚類取最佳結果來解決。
Kmeans的計算過程大概表示如下
隨機選擇k個聚類中心. 最終的類別個數<= k
計算每個樣本到各個中心的距離
每個樣本聚類到離它最近的中心
重新計算每個新類的中心
重複以上步驟直到滿足收斂要求。(通常就是中心點不再改變或滿足一定迭代次數).
二:Mahout實現
1.資料準備
仿造資料1.txt
8 8
7 7
6.1 6.1
9 9
2 2
1 1
0 0
2.9 2.9
2.txt
8.1 8.1
7.1 7.1
6.2 6.2
7.1 7.1
2.1 2.1
1.1 1.1
0.1 0.1
3.0 3.0
2.將資料轉換為序列檔案
方法1:命令列轉換,具體參考:點選開啟連結
方法2:程式碼轉換,可借用canopy演算法中的程式碼,具體參考:點選開啟連結
3.執行
bin/mahout kmeans -i /yourFilePath -o /yourFileOutputPath -c /yourStartCenter -k 2 -x 5 -cl
引數意義說明:
-i 設定檔案輸入路徑, -o 為檔案輸出路徑 -c 為初始輸入聚類中心 -k 表示聚類的數目 -x 表示最大的迴圈次數 -cl 表示演算法完成後進行原始資料的分類
4.結果分析
因為k值為2,所以在clusters-0中有兩個聚類中心檔案
初始化聚類中心為[2.0,2.0] [2.1,2.1]
clueters-1和cluster-2的輸出為[1.033,1.033] [5.725,5.725] , [1.525,1.525] [7.325,7.325]
最後的聚類中心是[1.525,1.525] [7.325,7.325]
使用此聚類中心對資料進行聚類,得到clusteredPoints資料夾下邊的檔案
相關文章
- KMeans演算法與GMM混合高斯聚類演算法聚類
- Kmeans如何初始化聚類中心聚類
- 利用python的KMeans和PCA包實現聚類演算法PythonPCA聚類演算法
- ML.NET技術研究系列-2聚類演算法KMeans聚類演算法
- 聚類kmeans演算法在yolov3中的應用聚類演算法YOLO
- 機器學習演算法筆記之8:聚類演算法機器學習演算法筆記聚類
- 聚類之K均值聚類和EM演算法聚類演算法
- 機器學習-聚類分析之DBSCAN機器學習聚類
- 機器學習 之 層次聚類機器學習聚類
- 【Python機器學習實戰】聚類演算法(1)——K-Means聚類Python機器學習聚類演算法
- 機器學習Sklearn系列:(五)聚類演算法機器學習聚類演算法
- 【Python機器學習實戰】聚類演算法(2)——層次聚類(HAC)和DBSCANPython機器學習聚類演算法
- 【無監督學習】2:DBSCAN聚類演算法原理聚類演算法
- 機器學習——KMeans機器學習
- 機器學習中的聚類演算法演變及學習筆記機器學習聚類演算法筆記
- 聚類演算法聚類演算法
- 機器學習——dbscan密度聚類機器學習聚類
- 機器學習(8)——其他聚類機器學習聚類
- 聚類(part3)--高階聚類演算法聚類演算法
- 系統學習NLP(二十)--文字聚類聚類
- 20分鐘學會DBSCAN聚類演算法聚類演算法
- 9.1.6 DBSCAN聚類演算法————機器學習實戰第二版聚類演算法機器學習
- 機器學習—聚類5-1(K-Means演算法+瑞士捲)機器學習聚類演算法
- InnoDB學習(八)之 聚簇索引索引
- 吳恩達《Machine Learning》精煉筆記 8:聚類 KMeans 及其 Python實現吳恩達Mac筆記聚類Python
- 聚類演算法綜述聚類演算法
- OPTICS聚類演算法原理聚類演算法
- 初探DBSCAN聚類演算法聚類演算法
- 【機器學習】K-means聚類分析機器學習聚類
- 聯邦學習:多工思想與聚類聯邦學習聯邦學習聚類
- 14聚類演算法-程式碼案例六-譜聚類(SC)演算法案例聚類演算法
- 09聚類演算法-層次聚類-CF-Tree、BIRCH、CURE聚類演算法
- 04聚類演算法-程式碼案例一-K-means聚類聚類演算法
- python Kmeans演算法解析Python演算法
- 可伸縮聚類演算法綜述(可伸縮聚類演算法開篇)聚類演算法
- Spark中的聚類演算法Spark聚類演算法
- 深度聚類演算法敘談聚類演算法
- 深度聚類演算法淺談聚類演算法
- Kmeans演算法優缺點演算法