SuperAPI AI 工具集

networkx

数据与分析

查看项目

更新于 10-21 16:33

技能介绍

用途

NetworkX 是一个用于创建、操作和分析复杂网络与图的 Python 包。本技能适用于处理网络或图数据结构的任务,包括社交网络、生物网络、交通系统、引文网络、知识图谱,或任何涉及实体间关系的系统。

本技能面向 NetworkX 3.x(当前稳定版为 3.6,要求 Python >= 3.11)。若干 3.0 之前的 API(nx.info、nx.write_gpickle、nx.read_shp)以及 3.4 时代的 nx.random_tree 已不存在,本技能中均使用当前的替代方案。

主要能力

1. 图的创建与操作

NetworkX 支持四种主要图类型:Graph(无向单边图)、DiGraph(有向图)、MultiGraph(允许节点间多条边的无向图)、MultiDiGraph(允许多条边的有向图)。可通过 nx.Graph() 创建空图,使用 add_node、add_nodes_from、add_edge、add_edges_from 添加节点和边,节点可为任意可哈希类型并支持属性。

2. 图算法

提供广泛的网络分析算法,包括:最短路径(nx.shortest_path、nx.shortest_path_length)、中心性度量(度中心性、介数中心性、PageRank)、社区检测(community.greedy_modularity_communities)、连通性(nx.is_connected、nx.connected_components)等。

3. 图生成器

可创建合成网络用于测试、模拟或建模,包括经典图(完全图、环图、Karate 俱乐部图、Petersen 图)、随机网络(Erdős-Rényi、Barabási-Albert 无标度网络、Watts-Strogatz 小世界网络)、结构化网络(网格图、随机树,注意 random_tree 在 NetworkX 3.4 中已移除,现使用 nx.random_labeled_tree)。

4. 图的读写

支持多种文件格式和数据源:边列表、GraphML(保留属性)、GML、JSON(node-link 格式,自 NetworkX 3.6 起边列表存储在 "edges" 键下,旧文件可能使用 "links")、Pandas DataFrame、NumPy 数组、SciPy 稀疏矩阵等。

5. 可视化

可使用 matplotlib 创建清晰的信息化网络可视化,支持基本绘制、按度着色、按中心性调整节点大小、边权重调整宽度,以及多种布局算法(spring、circular、kamada_kawai、spectral)。还可创建出版级图形,保存为 PNG 或 PDF 矢量格式。

使用方式

安装:可通过 uv pip install networkx 或 uv pip install networkx[default](含可选依赖)安装。

常见工作流模式:创建或加载图 → 检查结构(节点数、边数、密度、连通性)→ 分析(计算度量、查找路径、检测社区)→ 可视化 → 导出结果。

适用场景

  • 从数据构建网络结构,添加带属性的节点和边
  • 计算中心性度量、查找最短路径、检测社区、测量聚类
  • 运行标准算法如 Dijkstra、PageRank、最小生成树、最大流
  • 创建合成网络用于测试或模拟
  • 从各种格式读写图数据
  • 使用 matplotlib 或交互式库绘制和定制网络可视化
  • 检查同构性、计算图度量、分析结构属性

限制与注意事项

  • 浮点精度:图中包含浮点数时,所有结果因精度限制本质上是近似的,可能影响算法结果,尤其是在最小/最大计算中。
  • 内存与性能:每次运行脚本时图数据必须加载到内存。对于大型网络,应使用适当的数据结构(大型稀疏图用稀疏矩阵)、考虑仅加载必要子图、使用高效文件格式(pickle、压缩格式)、对超大网络使用近似算法。NetworkX 3.x 支持通过 backend= 关键字或 nx.config.backend_priority 使用加速后端(如 nx-cugraph GPU、nx-parallel 多核、graphblas-algorithms 稀疏线性代数),安装后端包后向支持的函数传递 backend="cugraph" 即可,无需修改算法代码。
  • 节点和边类型:节点可为任意可哈希 Python 对象;移除节点时所有关联边自动移除。
  • 随机种子:在随机图生成和力导向布局中应始终设置随机种子以保证可复现性。

智能体操作流程

  1. 检查环境:确认 Python 环境和库版本,检查数据形状、类型和缺失值。
  2. 确定输入:从数据或用户确认格式、标识符和参数,对任何会改变结果的值应询问而非猜测。
  3. 先运行小版本:在样本或单折上运行,检查运行时间和内存。
  4. 执行完整任务。
  5. 验证结果:使用留出数据、固定随机种子和适当指标,检查泄漏,报告不确定性。
  6. 报告:说明运行了什么(版本、命令、参数)、检查了什么、还有什么不确定。

完整性规则

  • 绝不捏造结果、参数、标识符、引用或统计量。
  • 绝不报告本次会话中未计算的指标。
  • 将版本特定细节视为可能过时,对照已安装版本的官方文档确认。
  • 在涉及花钱、消耗共享 GPU 或云配额、接触个人或患者数据、或不可撤销的操作前先询问。

参考资源

本技能包含参考文档:references/graph-basics.md(图基础)、references/algorithms.md(算法)、references/generators.md(生成器)、references/io.md(I/O)、references/visualization.md(可视化)。

官方文档:https://networkx.org/documentation/latest/ 教程:https://networkx.org/documentation/latest/tutorial.html 示例库:https://networkx.org/documentation/latest/auto_examples/index.html GitHub:https://github.com/networkx/networkx