如何使用NetworkX结合Force Atlas或Sampson算法实现关键词共现网络聚类
关键词共现网络聚类实现方案
Force Atlas属于力导向布局算法,作用是将同属一个聚类的节点在视觉上聚拢展示;聚类本身需要配合社区检测算法完成,Sampson算法属于块模型类的社区聚类算法。
基于Force Atlas的聚类可视化实现
不需要依赖pygraphviz,可使用fa2-python库完成Force Atlas布局,配合Louvain社区检测算法实现聚类,步骤如下:
- 安装依赖库
pip install fa2-python python-louvain pandas networkx matplotlib
- 完整实现代码
import pandas as pd import networkx as nx import matplotlib.pyplot as plt from fa2 import ForceAtlas2 from community import community_louvain # 读取共现矩阵建图 input_data = pd.read_csv('Matrix.csv', index_col=0) # 共现网络一般用无向图,不需要方向可替换你之前的DiGraph G = nx.Graph(input_data.values) # 给节点绑定原始关键词标签 mapping = dict(zip(range(len(input_data.index)), input_data.index)) G = nx.relabel_nodes(G, mapping) # 第一步:执行Louvain聚类,得到每个节点所属社区 partition = community_louvain.best_partition(G) # 第二步:初始化Force Atlas2布局参数 forceatlas2 = ForceAtlas2( outboundAttractionDistribution=True, linLogMode=False, adjustSizes=False, edgeWeightInfluence=1.0, jitterTolerance=1.0, barnesHutOptimize=True, barnesHutTheta=1.2, multiThreaded=False, scalingRatio=2.0, strongGravityMode=False, gravity=1.0, verbose=False ) # 计算布局坐标 positions = forceatlas2.forceatlas2_networkx_layout(G, pos=None, iterations=2000) # 第三步:按聚类分组上色绘制 cmap = plt.get_cmap('tab20', max(partition.values()) + 1) nx.draw_networkx_nodes(G, positions, partition.keys(), node_size=100, cmap=cmap, node_color=list(partition.values())) nx.draw_networkx_edges(G, positions, alpha=0.3) # 节点数量少的话可以取消下面注释显示关键词标签 # nx.draw_networkx_labels(G, positions, font_size=8) plt.axis('off') plt.show()
基于Sampson算法的聚类实现
Sampson算法属于块模型聚类,适合小规模网络的结构划分,实现方法如下:
- 安装依赖库
pip install blockmodels
- 核心代码片段
import blockmodels as bm # 基于Sampson块模型计算聚类,可自行调整block_counts的聚类数范围 model = bm.Blockmodel(G, block_counts=range(2,10), method='spectral') model.fit() # 得到最优聚类结果 sampson_partition = model.get_membership() # 后续可以配合任意布局算法(比如NetworkX自带的spring_layout或者上面的Force Atlas)完成可视化,上色逻辑和上面代码一致
Windows环境pygraphviz安装解决方案
直接用pip install pygraphviz在Windows下大概率失败,因为缺少底层Graphviz依赖,推荐两种高成功率的安装方式:
- 方式一(conda环境首选,成功率100%):
如果你用Anaconda/Miniconda管理Python环境,直接执行以下命令即可自动安装所有依赖:conda install pygraphviz - 方式二(原生Python环境):
- 先下载对应你系统架构(32/64位)的Graphviz官方Windows安装包,安装时勾选「Add Graphviz to system PATH」选项,安装完成后重启命令行,执行
dot -V能正常输出版本号即说明环境配置生效 - 下载和你Python版本、系统架构匹配的pygraphviz预编译whl包,本地执行
pip install 你下载的whl文件路径完成安装
- 先下载对应你系统架构(32/64位)的Graphviz官方Windows安装包,安装时勾选「Add Graphviz to system PATH」选项,安装完成后重启命令行,执行
内容的提问来源于stack exchange,提问作者Tahi
相关产品推荐
相关产品推荐

