NetworkX

NetworkX 是一个 Python 编程语言软件包,可用于创建、操作和学习复杂图形网络的结构、动态和功能。

什么是 NetworkX?

NetworkX 是一个进行复杂图形网络分析的 Python 软件包。要了解 NetworkX 功能,首先需要了解图形。图形是一种数学结构,用于对物理、生物、社会和信息系统中多种类型的关系和过程进行建模。图形由通过边缘连接(表示这些实体之间的关系)的节点或顶点(表示系统实体)构成。图形处理是一种能够穿梭各边缘和节点的功能,用于发现和理解网络中关联数据之间的复杂关系和/或优化路径。

使用图形优化网络中关联数据之间的路径。

图形网络分析有许多用途,例如分析社交网络中的关系、网络威胁检测,以及根据共同偏好识别潜在买家。 

在现实世界中,节点可以是人员、群组、地点或事物,例如客户、产品、成员、城市、商店、机场、端口、银行帐户、设备、手机、分子或网页。

节点之间的边缘或关系示例包括友谊、网络连接、超链接、道路、路线、电线、电话、电子邮件、“点赞”、支付、交易、电话呼叫和社交网络消息。边缘可以用一个单向箭头来表示从一个节点到另一个节点的关系,比如,如果 Janet“点赞了”Jeanette 的一篇社交媒体文章。不过,它们也可以是无向的,比如,如果 Bob 是 Alice 的 Facebook 好友,那么 Alice 也是 Bob 的好友。

NetworkX 节点可以是任何可哈希的对象,它的值保持永久改变。这些值可以是文本字符串、图像、XML 对象、整个图形,也可以是自定义节点。基本软件包内提供了多个函数,可以借助这些函数以多种格式生成、读取和编写图形。

NetworkX 能够处理具有 1000 多万个节点和 1 亿多个边缘的巨大图形。核心软件包是符合 BSD 许可的免费软件,其中包括表示简单图形、有向图形以及采用并行边缘和自循环的图形等的数据结构。NetworkX 还具有一个庞大的开发者社区。开发者会维护核心软件包,并为第三方生态系统贡献力量。

NetworkX 具有以下主要用途:

  • 研究社会、生物和基础设施网络结构和动态
  • 标准化图形的编程环境
  • 快速开发协同跨学科项目
  • 与使用 C、C++ 和 FORTRAN 编写的算法和代码集成
  • 处理大型非标准数据集

NetworkX 易于安装和使用,尤其是对于 Python 开发者而言。

为何选择图形分析?

图形分析可用于确定图形中对象之间的关系强度和方向。鉴于网络在我们的信息生态系统中发挥着日益重要的作用,因此,对关系分析工具的需求有着近乎无限的潜能。从购买决策到举国选举,社交网络对一切事物都有着重要影响,这一影响加速了对图形分析的使用。在发现由于网络复杂性或节点间路径的数量而导致的不明显关系时,它发挥的作用尤为明显。 

图形分析对于实现以下目标作用明显:

  • 检测洗钱等金融犯罪
  • 识别欺诈交易及活动
  • 在社交网络社区执行网红分析
  • 根据客户评级或购买物来进行推荐分析。
  • 发现电网、水网和运输网络的缺点
  • 优化航空公司、零售和制造业的路线
  • 在新冠肺炎 (COVID-19) 期间,确定特定时段内的密接者,可谓是一款生死攸关的应用程序
  • 了解影响力如何发挥作用,以便营销人员能够锁定最有可能为其产品树立口碑的人
  • 根据用户之间的关系(即使用户彼此不了解),通过映射相似兴趣和共享连接,提供社交营销内容
  • 帮助政治运动和政治科学家更好地了解导致信息病毒式传播和传播虚假新闻的因素
  • 使得搜索引擎根据信息需求相似的人的行为偏好提供结果

图形分析可用于确定图形中对象之间的关系强度和方向。图形分析可用于确定图形中对象之间的关系强度和方向。

为何选择 NetworkX?

NetworkX 为数据科学家和图形数学的其他用户提供了一种标准化的方式,供其协作、构建、设计、分析和共享图形网络模型。作为以可扩展性和可移植性而闻名的免费软件,NetworkX 深受 Python 爱好者喜爱。它也是广为数据科学家喜爱的热门图形框架。数据科学家致力于构建一个充满活力的 Python 软件包生态系统,利用数值线性代数和绘图等功能扩展 NetworkX。

NetworkX 对数据科学家的重要意义

数据科学团队

机器学习和深度学习等大数据科学项目通常需要许多团队成员共同协作。标准化工具和格式的使用大大简化了信息共享。NetworkX 根植于 Python(一种热门的数据科学语言),为 Python 库提供图形分析扩展,它只需为 Python 用户提供极少量培训,且可在多家公司及多个大洲的团队间部署。

借助 GPU 加速图形分析

GPU 具有大规模并行性,并且显存访问带宽优势显著,因此十分适用于加速数据密集型分析,特别是图形分析。GPU 采用大规模并行架构,包含数千个专为同时处理多个任务而设计的小核心,非常适合执行“为每个 X 执行 Y”的计算任务,可应用于大型图形中的顶点或边缘集。

CPU 与 GPU 的区别。

借助 RAPIDS cuGraph 加速 NetworkX

NVIDIA RAPIDS cuGraph 能够提供将 RAPIDS 生态系统与 NetworkX 相集成的加速图形分析库。RAPIDS cuGraph 的愿景是使图形分析无处不在,以便用户只需考虑分析而无需考虑技术或框架。

最新款 NVIDIA GPU 的强大计算能力提升了图形分析速度。此外,GPU 的内部显存速率使 cuGraph 能够快速切换数据结构,满足分析需求,而不限于单一数据结构。

通过有效利用 GPU 中的大规模并行性,RAPIDS 的图形算法(如 PageRank)和功能(如 NetworkX)能够将大型图形的分析速度提高 1000 多倍。用户可以在单块 NVIDIA A100 Tensor Core GPU 上探索多达 2 亿个边缘,并在 NVIDIA DGX™ A100 集群上扩展至数十亿个边缘。

NVIDIA GPU 加速的端到端数据科学

RAPIDS 结合了执行高速 ETL、图形分析、机器学习和深度学习的能力。它是一套开源软件库和 API,用于完全在 GPU 上执行数据科学流程,并且可以将训练时间从几天缩短至几分钟。RAPIDS 依赖于 NVIDIA CUDA® 基元进行低级别计算优化,但通过用户友好型 Python 界面实现 GPU 并行结构和极高的内存带宽。

NVIDIA RAPIDS,GPU 加速的端到端数据科学。

Rapids cuGraph 无缝集成到 RAPIDS 数据科学生态系统中,使数据科学家能够使用存储在 GPU DataFrame 中的数据轻松调用图形算法。借助 RAPIDS GPU DataFrame,数据可以通过一个类似 Pandas 的接口加载到 GPU 上,然后用于各种连接的机器学习和图形分析算法,而无需离开 GPU。这种级别的互操作性是通过 Apache Arrow 这样的库实现的。这可加速端到端流程(从数据准备到机器学习,再到深度学习)。RAPIDS 和 DASK 使 cuGraph 能够扩展为多个 GPU,支持数十亿个边缘图形。