课堂作业:对班里同学之间的社交关系进行分析
使用的软件
Gephi 是一款网络分析领域的数据可视化软件
官方网站 - Gephi

流程

数据处理与导入
仅单纯导入了班级内各同学之间认识的关系,并没有将个人其他信息加入
简单拉出关系表转换为.csv

使用 python 建立节点表格与边表格,方便导入 Gephi 软件。

报告
导入时初始网络图

使用的布局方式:Force Atlas,斥力强度 200.0
依据节点的度对节点上色与改变大小

使用的布局方式:Force Atlas,斥力强度 2000.0,部分距离较远节点经过手动调整位置。
聚合系数 Cluster coefficient
聚合系数是网络的局部特征,反映了相邻两个人之间朋友圈子的重合度,即该节点的朋友之间也是朋友的程度。

使用Gephi计算该网络的平均聚合系数为 0.587
平均度数 Avg degree
使用Gephi计算该网络的平均度数为 4.119
度数分布图:

平均路径长度(特征路径长度) Avg path length
使用Gephi计算该网络的平均路径长度为 2.379
网络直径:5
体现小世界现象
模块化 Modularity
使用Gephi计算该网络的模块化程度为 0.414
模块化程度:

利用模块化的计算,可以进行社区发现 ( Community Detection )

社区发现可视化结果:

与其它同学发现的对比:

附
python 源代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| import csv
header_namelist = ['Id', 'Label'] header_relation = ['Source', 'Target']
with open('namelist.csv', 'w', newline='', encoding='utf-8') as nf: nfer = csv.writer(nf) nfer.writerow(header_namelist) with open('res.csv', encoding='utf-8') as f: f_csv = csv.reader(f) next(f_csv, None) for row in f_csv: nfer.writerow([row[0], row[0]])
with open('relation.csv', 'w', newline='', encoding='utf-8') as nf: nfer = csv.writer(nf) nfer.writerow(header_relation) with open('res.csv', encoding='utf-8') as f: f_csv = csv.reader(f) next(f_csv, None) for row in f_csv: source = row[0] for target in row[1 : -1]: if target: nfer.writerow([source, target])
|