基于边权重的图聚类
Posted
技术标签:
【中文标题】基于边权重的图聚类【英文标题】:Graph Clustering based on the edge weights 【发布时间】:2021-03-28 07:41:23 【问题描述】:我使用 networkx 构建了一个图表,它是一个社交网络,以人为节点,消息频率为边权重。我想把这个网络聚集到不同的人群中。经常互相发信息的人往往在同一组中。我该怎么做?我应该使用哪种聚类算法?另外,如何像树状图一样可视化分组?
提前致谢! :D P.S.:我尝试过使用 python-louvain 进行分区,但这会产生不准确的结果,例如即使他们的消息传递频率非常高,它也会将两个用户划分为不同的组
【问题讨论】:
【参考方案1】:我尝试过使用 python-louvain 进行分区,但结果不准确[...]
Louvain 方法并不完美,也没有完美的方法,它们始终取决于您要达到的目标(参见@987654321@ 的结论)。
[...] 就像它会将两个用户分成不同的组,即使他们的消息频率非常高。
看来这个用户可能属于多个社区...也许可以尝试一种允许重叠社区的分区方法,例如K-Clique。这种划分方法允许节点属于多个社区。p>
算法:
以下是我发现的一些替代算法:
networkX 包中已经包含许多算法(here)。我建议girvan_newman
但这需要大量的计算能力...
CDLib 包还具有许多用于 networkX(here) 的算法,包括一些允许重叠社区的算法。另外,检查leiden algorithm,您可能更喜欢它而不是louvain,它应该更好(根据他们的paper)
我仍然建议使用python-louvain,用于清晰的社区
祝你好运!
【讨论】:
编辑了我的答案,看看有没有帮助!以上是关于基于边权重的图聚类的主要内容,如果未能解决你的问题,请参考以下文章
解读人:刘佳维,Spectral Clustering Improves Label-Free Quanti?cation of Low-Abundant Proteins(谱图聚类改善了低丰度蛋白的