社交网络算法-分析指标

社交网络算法-分析指标
  • 一个具体的网络可抽象为一个由节点(vertex或node) 集合V和边(edge)集合E组成的图G = (V, E),节点数 记为n = |V|,边数记为m = |E|。
  • 衡量指标
    • 度(degree)
    • 密度(density)
    • 团(clique)
    • 度中心性(degree centrality)
    • 紧密中心性(closeness centrality)
    • 介数中心性(betweenness centrality)
    • 聚集系数(clustering coefficient)
import csv
edges = []
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 igraph
g = 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 = 0
for p in paths:
    print([names[x] for x in p])
    cc += len(p)-1
print("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 = 7
  for 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 +=1
  print("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)

这里写图片描述
更多内容第一时间了解欢迎关注微信公众号 【码龙社】
这里写图片描述

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值