100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 社交网络算法-分析指标

社交网络算法-分析指标

时间:2023-03-04 18:11:29

相关推荐

社交网络算法-分析指标

社交网络算法-分析指标
一个具体的网络可抽象为一个由节点(vertex或node) 集合V和边(edge)集合E组成的图G = (V, E),节点数 记为n = |V|,边数记为m = |E|。 衡量指标

度(degree)密度(density) 团(clique)度中心性(degree centrality)紧密中心性(closeness centrality)介数中心性(betweenness centrality)聚集系数(clustering coefficient)

import csvedges = []with open('net.data', 'rb') as f:for row in csv.reader(f.read().splitlines()):u, v = [ i for i in row]edges.append((u, v))from igraph import Graph as igraphg = IGraph.TupleList(edges, directed = False, vertex_name_attr = 'name', edge_attrs = None,wwights = False)print(g)for p in g.vs:print(p['name'],p.degree())

紧密中心性(closeness centrality)

某个节点到达其他节点的难易程度,也就是其他所有结点距离的平均值的倒数

paths = g.get_all_shortest_paths("7")names = g.vs("name")cc = 0for p in paths:print([names[x] for x in p])cc += len(p)-1print("closeness centrality", (len(paths)-1)/float(cc))

ccvs = []for p in zip(g.vs, g.closeness()):ccvs.append({"name":p[0]["name"],"cc":p[1]})# print(pgvs)sorted(ccvs, key=lambda k: k['cc'], reverse=True)[:10]

介数中心性(betweenness centrality)

计算每对节点(i,j)之间的最短路径,当然需要得到具体路径

对哥哥节点判断该节点是否在最短路径上

最后将刚刚的判断进行累加得到从i到j的最短路径经过该节点的数量

点介数

sp = []target = 7for v in g.vs:print(v,v['name'])paths = g.get_all_shortest_paths(v["name"])for p in paths:if target in p and target != p[0] and target != p[-1]:print(target, p)sp.append(p)print(sp)print(len(sp))# 去重:i到j和j到i的同一条路径spbt = ()tu = []for x in sp:if set((x[0],x[-1])) not in tu:tu.append(set((x[0],x[-1])))spbt +=1print("betweenness = ", spbt)btvs = []for p in zip(g.vs, g.betweenness()):btvs.append({"name":p[0]["name"],"bt":p[1]})# print(pgvs)sorted(btvs, key=lambda k: k["bt"], reverse = True)

更多内容第一时间了解欢迎关注微信公众号 【码龙社】

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。