如何在Hadoop上實現K-Means算法?


一、K-Means算法原理

 

二、Hadoop實現K-Means的做法

1、偽代碼

(1)主要參數

  輸入: 參數0--存儲樣本數據的文本文件inputfile;

              參數1--存儲樣本數據的SequenceFile文件inputPath;

              參數2--存儲質心數據的SequenceFile文件centerPath;

              參數3--存儲聚類結果文件(SequenceFile文件)所處的路徑clusterPath;

              參數4--類的數量k;
  輸出:K個類的划分結果

(2)計算流程

  Begin:

    讀取inputPath,可采用蓄水池采樣法從中選取前k個點作為初始質心,將質心數據寫入centerPath;

    While 聚類終止條件不滿足:

      在Mapper階段,讀取inputPath,對於所有數據,遍歷所有的質心,並選擇最近的質心,將該質心的編號作為鍵傳遞給Reducer;

      在Reducer階段,將Mapper階段傳遞過來的值根據鍵歸並輸出,結果寫入clusterPath;

      讀取clusterPath,重新計算質心,對比reduce求出的平均值與原來或者上一次的質心,若不相同,這將清空原中心的數據文件將結果寫入centerPath;若相同,則刪掉reduce的輸出目錄,運行一個沒有reduce的任務將中心ID與值對應輸出。

    EndWhile

  End

 

注意:需預先確定判斷判斷聚類效果好壞的指標,即確定聚類停止的條件。

 

ps:空閑時間自己動手嘗試用hadoop實際實現K-Means。

 

參考資料:

https://blog.csdn.net/LJBlog2014/article/details/41553955


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM