社區發現

這是一次課程做業,實現有點粗糙。有更好的方案,歡迎交流。git

咱們須要評估每兩個用戶之間的類似度,以此來發現社區。如今咱們以每對用戶的共同關注人數量做爲評估標準。github

原始數據格式:排序

關注人_id:粉絲_1_id 粉絲_2_idget

但願獲得的輸出格式是it

用戶_id:類似的人_1_id 類似的人_2_idio

 

使用兩次mapreduce 過程社區

 

第一次map

輸入格式:followee_1_id:follower_1_id follower_2_id follower_3_idim

map:將後面的粉絲兩兩配對,並輸出。key爲 id-id 的形式,value爲1,表示這對用戶有一個共同好友數據

reduce: 相似wordcount,將相同key的value加起來

第二次

map:讀取並切分,好比將 A-B 4 分爲 a b 4 和 b a 4

reduce:將同一鍵的值合併到列表中, 並按相反的順序對其進行排序。而後輸出格式是 User_2:Similiar_Person_1 Similiar_Person_2 ...

此處只排出前十人。

 

代碼:

https://github.com/londist/Community-dectection

數據集:

Small scale dataset https://www.dropbox.com/s/ntzk80l5iiiuh50/Small%20Dataset.txt?dl=0 

Medium scale dataset https://www.dropbox.com/s/6sxnnadhxbyk7ho/Medium%20Dataset.txt?dl=0 

Large scale dataset https://www.dropbox.com/s/lrlgz50m88j6fpc/Large%20Dataset.txt?dl=0 

相關文章
相關標籤/搜索