首先什么是社區(Community structure)呢?其實並不是指一個網絡相互連接的部分,而是一個網絡中鏈接“緊密的部分”,至於怎么定義緊密就有很多方法了。
那么又該如何動手實現呢??
由於小組主要使用python和R語言編程,所以首先想到networkX這個python包,但是我找了一下里面並沒有相應的算法實現。其次是igraph,它提供了python和R語言的接口,然而通過調查,只在R的接口文檔里找到了一些社區發現算法,比如幾個fast_greedy,等
除了這兩個包外,還有一個很不錯的包,這個包,小組的成員以前並沒有使用過,叫graph-tool,這個包里,實現了一些社區發現的算法。當然在python下還有一些單獨的社區發現算法包,但是這些相對獨立,這里就不在介紹了
比較好的處理數據與繪制網絡圖可能要分開,繪制大規模網絡圖可以使用gephi,使用這個軟件可以手動設置可視化的網絡圖,這樣我們使用python等處理網絡數據和執行網絡算法,使用gephi執行可視化,會是一個很不錯的工作流。gephi其實很強大,里面其實也實現了社區發現的一些算法。請參考它的文檔。
如果如對比較龐大的數據集。
參考文獻
- http://barabasi.com/networksciencebook/resources/chapter9.html
- http://stats.stackexchange.com/questions/2948/how-to-do-community-detection-in-a-weighted-social-network-graph
- http://stackoverflow.com/questions/5822265/are-there-implementations-of-algorithms-for-community-detection-in-graphs?noredirect=1&lq=1
- http://senseable.mit.edu/community_detection/
- http://stackoverflow.com/questions/9471906/what-are-the-differences-between-community-detection-algorithms-in-igraph
- http://stackoverflow.com/questions/24513339/how-to-find-measures-after-community-detection-in-igraph-r?rq=1
