社区发现算法python视频_附源码|复杂网络社区发现——标签传播算法(LPA)

本文介绍了如何使用Python实现标签传播算法(LPA)进行复杂网络的社区发现,包括自定义实现和调用第三方库两种方式,并通过空手道俱乐部网络进行可视化演示。LPA是一种半监督学习算法,适用于寻找网络中的社区结构,虽然可能产生多个解决方案,但具有运行时间短和无需预知参数的优点。
摘要由CSDN通过智能技术生成

本文通过Python 3.7实现了标签传播算法的两个代码(1.自己写的,2.调包实现),并通过空手道俱乐部的例子进行可视化显示。

标签传播是一种半监督机器学习算法,它将标签分配给以前未标记的数据点。在算法开始时,数据点的子集(通常只占很小一部分)有标签(或分类)。在整个算法过程中,这些标签会传播到未标记的点。

在复杂的网络中,真实的网络往往具有社区结构。标签传播是寻找社区的一种算法。 与其他算法相比,标签传播在运行时间和关于网络结构所需的先验信息量方面具有优势(不需要预先知道参数)。缺点是它不会产生唯一的解决方案,而是产生许多解决方案的集合。

注意:该算法是概率性的,并且发现的社区可能因执行的不同而不同

算法的思想:

在用一个唯一的标签初始化每个节点之后,该算法会重复地将一个节点的标签设置为该节点的相邻节点中出现频率最高的标签。当每个节点的标签在其相邻节点中出现得最频繁时,算法就会停止。该算法是异步的,因为每个节点都会在不等待其余节点更新的情况下进行更新。

该过程有5个步骤:

初始化网络中所有节点的标签。对于给定的节点x,Cx (0) = x。

设置t = 1。

以随机顺序排列网络中的节点,并将其设置为x

对于以特定顺序选择的每个x ∈ X,让Cx(t) = f(Cxi1(t),…、Cxim(t)、Cxi(m+1)(t1)。…,Cxik(t1))。f这里返回相邻标签中出现频率最高的标签。如果有多个最高频率标签,就随机选择一个标签。

如果每个节点都有其邻居节点中数量最多的标签,则停止算法。否则,设置t = t + 1并转到(3)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值