⏱️ 20分钟 · 🖥️ 屏幕录制+代码讲解 · 🎯 零基础新手
什么是社会网络分析?简单来说,就是研究"谁和谁有关系"的学问。
想象一下:一个班级里,谁是谁的朋友?谁是这个班级的"中心人物"?谁连接了不同的小圈子?——这就是社会网络分析研究的问题。
在学术研究里,社会网络分析可以用来研究:企业之间的合作网络、学术论文的引用关系、社交媒体上的传播路径、国际贸易的依存关系……
用班级/朋友圈这种每个人都能理解的例子开场,降低概念门槛。
社会网络分析的第一步,是把"谁认识谁"变成可计算的数据。我们用边列表格式。
节点1, 节点2, 关系类型, 权重 宝玉, 黛玉, 爱情, 47 宝玉, 宝钗, 爱情, 31 凤姐, 贾琏, 婚姻, 35 凤姐, 宝玉, 亲情, 28
我准备了《红楼梦》87个人物的关系数据,包含200多条边。我们用Python的NetworkX库来处理这个数据。
import pandas as pd import networkx as nx df = pd.read_csv('hongloumeng_edges.csv') G = nx.from_pandas_edgelist(df, 'source', 'target', ['relation', 'weight']) print(f"节点数: {G.number_of_nodes()}") print(f"边数: {G.number_of_edges()}")
网络画出来之前,我们需要先在Gephi里导入数据。
1. 打开Gephi → 新建项目 2. 菜单:文件 → 导入电子表格 3. 选择CSV文件,设置分隔符 4. 选择"无向图"或"有向图" 5. 点击"下一步" → "完成"
Gephi最常用的布局算法是ForceAtlas 2——它模拟物理中的弹簧力,让有连接的节点靠近,没连接的节点远离。
ForceAtlas 2参数: - 缩放: 2.0 - 强度: 100 - 悬挂长度: 200 点击"运行",观察网络逐渐形成团块结构。
中心性是衡量"谁更重要"的核心指标。我们主要看四种:度中心性、介数中心性、接近中心性、特征向量中心性。
import pandas as pd # 计算四种中心性 degree = nx.degree_centrality(G) betweenness = nx.betweenness_centrality(G) closeness = nx.closeness_centrality(G) eigenvector = nx.eigenvector_centrality(G, max_iter=1000) # 整合结果 centrality_df = pd.DataFrame({ 'name': list(G.nodes()), 'degree': list(degree.values()), 'betweenness': list(betweenness.values()), 'closeness': list(closeness.values()), 'eigenvector': list(eigenvector.values()) }).sort_values('betweenness', ascending=False)
看介数中心性结果:王熙凤排第一,贾母第二。这意味着王熙凤是整个网络中信息流动的关键枢纽——她连接了最多的"桥梁"。
介数中心性Top 5: 1. 王熙凤: 0.142 ← 信息枢纽 2. 贾母: 0.128 3. 贾宝玉: 0.119 4. 平儿: 0.098 5. 袭人: 0.087
社群检测的目标是:找出哪些人形成了"小圈子"——彼此之间联系紧密,但和其他圈子联系较少。
from community import community_louvain partition = community_louvain.best_partition(G) num_communities = len(set(partition.values())) print(f"检测到 {num_communities} 个社群") for community_id in range(num_communities): members = [n for n, c in partition.items() if c == community_id] print(f"社群{community_id+1}: {members[:5]}...")
Louvain算法检测出了6个主要社群:荣国府管理层、大观园青春圈、宁国府、边缘人物群、僧道超自然群……
这期视频我们完成了社会网络分析的入门:从数据准备到可视化,从中心性分析到社群检测。完整代码和数据都可以在SocienceAI官网免费下载。
去 socienceai.com/tutorials/social-network-analysis.html 获取完整教程+代码+数据集。三连支持,我们下期见!