首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

igraph,一个复杂网络的 Python 库!

igraph:让你玩转复杂网络的神器

我最近发现了个宝贝,叫igraph,是个用Python搞复杂网络分析的利器。这玩意儿简直太强了,能帮你轻松搞定网络构建、可视化和各种复杂的分析。不管你是搞社交网络、生物信息还是交通系统,igraph都能派上大用场。来,我们一起瞧瞧这个宝贝能干啥。

1

安装igraph:小菜一碟

安装igraph简直不要太简单,直接用pip就搞定了:  

pip install python-igraph

温馨提示:如果你想要可视化功能,最好再装个Cairo库。不过别怕,大多数情况下,pip会自动帮你搞定依赖。

2

创建你的第一个图:so easy

igraph里最基本的概念就是 图(Graph) 。来,咱们创建一个简单的图试试水:

import igraph as ig# 创建一个无向图g = ig.Graph()# 添加一些顶点g.add_vertices(5)# 添加一些边g.add_edges([(0,1), (1,2), (2,3), (3,4), (4,0)])print(g)

看到没,就这么几行代码,一个环形图就出来了。igraph里的图默认是从0开始编号的,所以别搞错了哈。

3

给图加点料:属性设置

光有骨架不行,得给图加点肉。igraph允许你给顶点和边加上各种属性,比如名字、权重啥的:  

# 给顶点加名字g.vs[“name”] = [“Alice”, “Bob”, “Charlie”, “David”, “Eve”]# 给边加权重g.es[“weight”] = [1.0, 2.0, 3.0, 4.0, 5.0]# 打印一下看看print(g.vs[“name”])print(g.es[“weight”])

这里vs是顶点的集合,es是边的集合。你可以像操作字典一样给它们加属性,贼方便。

4

来点高级的:图的分析

igraph真正牛x的地方在于它的分析功能。比如说,想知道谁是图中的“大佬”(度中心性最高的点)?  

# 计算度中心性degrees = g.degree()max_degree = max(degrees)big_shots = [v.index for v in g.vs if v.degree() == max_degree]print(f“图中的大佬是: {[g.vs[i]['name'] for i in big_shots]}”)

这段代码计算了每个顶点的度(与之相连的边的数量),然后找出度最大的那些顶点。在社交网络里,这些可能就是最有影响力的人。

5

可视化:让你的图动起来

光看数字没意思,来画个图瞧瞧:  

import matplotlib.pyplot as plt# 获取布局layout = g.layout(“kk”)# 绘图fig, ax = plt.subplots()ig.plot(    g,    layout=layout,    target=ax,    vertex_size=30,    vertex_color=“lightblue”,    vertex_label=g.vs[“name”],    edge_width=[w/2 for w in g.es[“weight”]])plt.show()

6

社区发现:揪出小圈子

在大型网络中,经常会有一些小圈子。igraph提供了多种方法来发现这些社区:  

这里用了Erdős–Rényi模型随机生成了一个图,然后用快速贪婪算法检测了社区。你还可以试试其他算法,比如Louvain方法啥的。

温馨提示:社区检测算法可能会因为随机性给出不同的结果,所以多跑几次看看结果是不是稳定的。

igraph真是个宝藏库,我这里只是浅尝辄止。它还有超多高级功能,比如最短路径、中心性分析、图的同构检测等等。慢慢探索,你会发现更多有意思的东西。

用igraph分析复杂网络,就像拿着X光机看透了整个系统的骨架。无论是研究社交网络的“网红效应”,还是分析交通网络找出最容易堵车的路段,igraph都能帮你搞定。好了,今天就聊到这,去试试吧,相信你会爱上这个强大的工具的!

  • 发表于:
  • 原文链接https://page.om.qq.com/page/O8dJIuO68An3WHrvA30tidIg0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券