2017-06-27 54 views
2

我高度懷疑community包中有一個錯誤。它在模塊評分中的計算中。我看着Louvain算法paper並發現一些異常。這裏是problem- 在Q社區包中的錯誤?

Equation for Q

k_ik_j/2m後方程外1/2m相乘後應該k_ik_j/4 sqr(m),但是如果你去的包的modularity()功能,代碼像這樣 - sqr(k_ik_j/4m)。見行號131和是線 -

res += (inc.get(com, 0.)/(2. * links)) -(deg.get(com, 0.)/(2. * links)) ** 2 

但是,根據公式它應該是像這個 -

res += (inc.get(com, 0.)/(2. * links)) - deg.get(com, 0.)/(2. * links) ** 2 

我有些玩具圖形測試,以檢查的最佳模塊化得分集羣和第二個更正的代碼爲最佳分區提供了最高的模塊性。但是,第一個代碼(錯誤的(可能)),爲最佳分區提供低模塊化分數。

以上是我閱讀論文後得到的結果,用一些圖表進行測試並瞭解並調試modularity()函數。

我的問題是,我的發現是正確的?任何人都可以檢查它嗎?如果有人需要更多的信息或澄清,我可以提供。

我使用的是0.837版本的python-louvine包。

+3

如果這是相同的事情,[這是一個github頁面](https://github.com/taynaud/python-louvain/issues),如果你認爲你發現了一個bug,你可以提出問題。 (這是我的領域知識。) –

回答

1

你說得對,第二部分是k_i * k_j /(4 sqr(m)),其中k_i是社區i的程度。但是,你只考慮情況下我== j和因此變成:

K_I * K_I/4 SQR(M)==(K_I /(2米))** 2

隨着你的公式,我想你只是在考慮k_i而忘記了k_j。