python实现计算顶点聚类系数顶点聚集系数clusteringcoefficient

python实现计算顶点聚类系数顶点聚集系数clusteringcoefficient


2023年12月1日发(作者:三星猎户座处理器)

python实现计算顶点聚类系数顶点聚集系数

clusteringcoefficient

计算每个结点的局部聚类系数

对于节点vi,找出其直接邻居结点集合Ni,计算Ni构成的图中的边数K,除以Ni集合可能的边数|Ni|*|Ni|-1/2(⽆向图)或|Ni|*|Ni|-1

(有向图)

代码下载地址:

代码:

# encoding=utf-8

#求图结点的聚类系数以及平均聚类系数

ce_list = []

node_set = set()

edge_set = set()

node_list = []

edge_list2 = []

#求每个结点的平均聚类系数

def getCE(node,edgeList):

#找当前node的直接邻接点,存⼊node_set的集合中

for edge in edgeList:

if edge[0] == node:

node_(edge[1])

elif edge[1] == node:

node_(edge[0])

#找邻接点集合中的点所构成的边的数⽬

for edge in edgeList:

if edge[0] in node_set and edge[1] in node_set:

s = edge[0]+edge[1]

edge_(s)

neighbourNodeNum = len(node_set) #邻接点结点个数

neighbouredgeNum = len(edge_set) #邻接点构成的边的条数

print("neighbour node Num:", neighbourNodeNum)

print("neighbour edge Num:", neighbouredgeNum)

ceNum = 0

#求聚类系数的公式

if neighbourNodeNum > 1:

ceNum = 2*neighbouredgeNum/((neighbourNodeNum-1)*neighbourNodeNum) #⽆向图要乘2,有向图不需要乘2

ce_(ceNum)

node_()

edge_()

def getAverageCE(ce_list):

total = 0

for ce in ce_list:

total += ce

return total/len(ce_list)

def main():

#从⽂件中读取边信息

with open('facebook_',encoding='utf-8') as f1:

edge_list = nes()

#格式化边信息,去掉其末尾的n

for i in range(len(edge_list)):

spiltList = edge_list[i].replace('n',"").split(" ", 1)

edge_(spiltList)

#读取结点信息,应该从⽂件中读取,但鉴于结点名称为0-4038,简便起见直接遍历

for i in range(4039):

node_(str(i))

#对每个结点计算聚类系数

for node in node_list:

print(node)

getCE(node, edge_list2)

#输出每个结点的聚类系数

print(ce_list)

#输出平均聚类系数

print(getAverageCE(ce_list))

if __name__ == "__main__":

main()

facebook_数据格式:


发布者:admin,转转请注明出处:http://www.yc00.com/num/1701382960a1075550.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信