python实现计算顶点聚类系数顶点聚集系数
clusteringcoefficient
计算每个结点的局部聚类系数
对于节点vi,找出其直接邻居结点集合Ni,计算Ni构成的图中的边数K,除以Ni集合可能的边数|Ni|*(|Ni|-1)/2(⽆向图)或|Ni|*(|Ni|-1)(有向图)
代码下载地址:
代码:
学硕国家线# encoding=utf-8
#求图结点的聚类系数以及平均聚类系数
ce_list = []
node_t = t()
edge_t = t()
吃什么食物补肾
node_list = []
edge_list2 = []
#求每个结点的平均聚类系数
def getCE(node,edgeList):
#找当前node的直接邻接点,存⼊node_t的集合中
for edge in edgeList:
if edge[0] == node:
node_t.add(edge[1])
elif edge[1] == node:
node_t.add(edge[0])
#找邻接点集合中的点所构成的边的数⽬
for edge in edgeList:
任时光if edge[0] in node_t and edge[1] in node_t:
s = edge[0]+edge[1]
edge_t.add(s)
neighbourNodeNum = len(node_t) #邻接点结点个数
neighbouredgeNum = len(edge_t) #邻接点构成的边的条数
print("neighbour node Num:", neighbourNodeNum)
print("neighbour edge Num:", neighbouredgeNum)
ceNum = 0
#求聚类系数的公式
if neighbourNodeNum > 1:
ceNum = 2*neighbouredgeNum/((neighbourNodeNum-1)*neighbourNodeNum) #⽆向图要乘2,有向图不需要乘2
ce_list.append(ceNum)
node_t.clear()烤鲫鱼
edge_t.clear()
def getAverageCE(ce_list):
财务预算管理制度total = 0
for ce in ce_list:
total += ce
return total/len(ce_list)
def main():
#从⽂件中读取边信息
with open('',encoding='utf-8') as f1:
edge_list = f1.readlines()
#格式化边信息,去掉其末尾的\n
for i in range(len(edge_list)):
spiltList = edge_list[i].replace('\n',"").split("", 1)
edge_list2.append(spiltList)
#读取结点信息,应该从⽂件中读取,但鉴于结点名称为0-4038,简便起见直接遍历
for i in range(4039):
奶酪焗饭
node_list.append(str(i))14岁身高
#对每个结点计算聚类系数
for node in node_list:
print(node)
getCE(node, edge_list2)
#输出每个结点的聚类系数print(ce_list)
thrown#输出平均聚类系数
print(getAverageCE(ce_list))
if__name__ == "__main__":
main()
数据格式: