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資料夾下邊的檔案
相關文章
- mahout之聚類演算法——KMeans分析聚類演算法
- Mahout聚類演算法學習之Canopy演算法的分析與實現聚類演算法
- 102、聚類Kmeans演算法聚類演算法
- Mahout分類演算法學習之實現Naive Bayes分類示例演算法AI
- KMeans演算法與GMM混合高斯聚類演算法聚類
- kmeans聚類演算法matlab實現聚類演算法Matlab
- Mahout學習系列之推薦演算法演算法
- kmeans實現文字聚類聚類
- 《機器學習實戰》kMeans演算法(K均值聚類演算法)機器學習演算法聚類
- Kmeans如何初始化聚類中心聚類
- 聚類kmeans演算法在yolov3中的應用聚類演算法YOLO
- ML.NET技術研究系列-2聚類演算法KMeans聚類演算法
- 聚類之K均值聚類和EM演算法聚類演算法
- 呼叫WEKA包進行kmeans聚類(java)聚類Java
- 利用python的KMeans和PCA包實現聚類演算法PythonPCA聚類演算法
- 聚類之dbscan演算法聚類演算法
- 第十篇:K均值聚類(KMeans)聚類
- Mahout學習之Mahout簡介、安裝、配置、入門程式測試
- 【機器學習】:Kmeans均值聚類演算法原理(附帶Python程式碼實現)機器學習聚類演算法Python
- 《機器學習實戰》二分-kMeans演算法(二分K均值聚類)機器學習演算法聚類
- 【無監督學習】2:DBSCAN聚類演算法原理聚類演算法
- Mahout學習之命令列建立序列檔案命令列
- Mahout學習之執行canopy演算法錯誤及解決辦法演算法
- 聚類演算法聚類演算法
- 機器學習中的聚類演算法演變及學習筆記機器學習聚類演算法筆記
- 機器學習演算法筆記之8:聚類演算法機器學習演算法筆記聚類
- 聚類(part3)--高階聚類演算法聚類演算法
- 系統學習NLP(二十)--文字聚類聚類
- 用scikit-learn學習DBSCAN聚類聚類
- 用scikit-learn學習BIRCH聚類聚類
- 用scikit-learn學習譜聚類聚類
- 機器學習筆記之Kmeans演算法機器學習筆記演算法
- 20分鐘學會DBSCAN聚類演算法聚類演算法
- InnoDB學習(八)之 聚簇索引索引
- 聯邦學習:多工思想與聚類聯邦學習聯邦學習聚類
- OPTICS聚類演算法原理聚類演算法
- 初探DBSCAN聚類演算法聚類演算法
- 聚類演算法綜述聚類演算法