python - python 中的社区检测算法

标签 python pandas numpy scikit-learn neo4j

Python 中是否有任何关于社区检测的包可供我简单使用?

这是我的数据集,只是一个包含一些关系记录的 csv 文件。

A,B
B,E
K,L
Q,W
P,Y
W,P
...

每一行代表一个人与另一个人有关系,例如'A,B'代表A与B有关系。并且不会出现可逆关系。例如,'B,A' 永远不会出现在此数据集中,因为已经存在 'A,B'

所以在这个例子中,所有可以链接在一起的节点都被认为是一个社区。排序后的关系如下:

Community 1: A--B--E
Community 2: K--L
Community 3: Q--W--P--Y

我希望输出可以是这样的,只输出所有社区以及每个社区中的所有成员。

我知道这种功能可以通过一些图数据库(例如neo4j)轻松实现。但是如何在Python中实现呢?是否有任何包(例如 sklearn 中的某些包)可以实现此目的?

最佳答案

这是一个图形问题。

假设此 DataFrame 作为输入:

  source target
0      A      B
1      B      E
2      K      L
3      Q      W
4      P      Y
5      W      P

你的图表是:

graph

并且您想要识别子组以形成系列/数据框架。

您可以使用networkx.connected_components :

# pip install networkx
import networkx as nx

G = nx.from_pandas_edgelist(df, source='source', target='target')

pd.Series({f'Community {i}': g
           for i,g in enumerate(nx.connected_components(G), start=1)})

输出:

Community 1       {A, E, B}
Community 2          {L, K}
Community 3    {P, W, Y, Q}
dtype: object

关于python - python 中的社区检测算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72169710/

相关文章:

Python 官方安装程序缺少 python27.dll

python - 如何将 x,y 坐标投影到 netcdf 文件中的纬度/经度

python - Pandas 在 Windows 终端中绘图

python - 检查Python DataFrame中是否有任何值为0

python - Pandas 数据框 : join items in range based on their geo coordinates (longitude and latitude)

python - 使用列和行索引作为变量填充 pandas 数据框

python - 你能在 Python 的核心类型上猴子补丁方法吗?

python - Python 中稀疏矩阵的矩阵乘法

python - 如何在 Python 中找到具有两个元素的数组的均值?

python - NumPy 相当于 pandas 日期时间访问器操作