以自我为中心的网络分析:《悲惨世界》角色社交网络洞察
在社交网络分析中,以自我为中心的网络分析(Egocentric Network Analysis)聚焦于单个节点周围的社区,而非整个网络的结构和组成。下面我们将通过分析《悲惨世界》中四个主要角色的自我中心网络,深入了解这种分析方法。
选择分析角色
为确保分析的多样性,我们选择了四个角色:冉·阿让(Valjean)、马吕斯(Marius)、伽弗洛什(Gavroche)和若李(Joly)。前三个角色在PageRank排名中较高,而若李排名较低,期望其自我中心网络与其他三人有显著差异。
冉·阿让的自我中心网络
冉·阿让是《悲惨世界》的主角,这也解释了他在网络中拥有最高的PageRank分数。以下是对其自我中心网络的详细分析:
1.
完整自我中心网络创建
:使用NetworkX的
ego_graph
函数创建冉·阿让的自我中心网络。
ego_1 = nx.ego_graph(G, 'Valjean')
draw_graph(ego_1, font_size=12, show_names=True, node_size=4, edge_width=1)
在这个网络中,冉·阿让处于中心位置,与其他节点(alter)存在各种关系。
2.
移除中心节点
:移除中心节点(冉·阿让)后,网络会分裂成多个部分,便于识别社区。
ego_1 = nx.ego_graph(G, 'Valjean', center=False)
draw_graph(ego_1, font_size=12, show_names=True, node_size=4, edge_width=1)
移除中心节点后,我们可以看到一个大的节点簇,包含至少两个社区,右侧有一个由三个节点组成的社区,还有四个孤立节点。
3.
去噪处理
:使用
k_core
函数移除边数少于1的节点,即孤立节点。
draw_graph(nx.k_core(ego_1, 1), font_size=12, show_names=True, node_size=4, edge_width=1)
去噪后的网络更加清晰,可明显看到两个节点簇。通过维基百科查询可知,米里哀(Myriel)是主教,马格洛大娘(Magloire)是他的女仆兼妹妹,巴普蒂丝汀(Baptistine)是他的妹妹,他们属于同一个社区。
4.
节点列表和数量
:可以通过以下两种方式获取自我中心网络中的节点数量和边数量。
# 方法一:计算节点数量
len(ego_1.nodes)
# 方法二:使用nx.info()函数获取节点和边的信息
nx.info(ego_1)
整个网络有77个节点,而冉·阿让的自我中心网络有36个节点和76条边,显然更简单。
5.
重要节点
:使用度中心性(degree centrality)来评估节点的重要性。
degcent = nx.degree_centrality(ego_1)
degcent_df = pd.DataFrame(degcent, index=[0]).T
degcent_df.columns = ['degree_centrality']
degcent_df.sort_values('degree_centrality', inplace=True, ascending=False)
degcent_df.head(10)
从结果可以看出,沙威(Javert)的度中心性约为0.457,明显领先于其他节点,这与他在网络中的核心地位相符。
6.
网络密度
:使用
nx.density()
函数计算网络密度。
nx.density(ego_1)
冉·阿让的自我中心网络密度约为0.12,表明该网络连接较为松散。
马吕斯的自我中心网络
马吕斯也是小说的主角之一,以下是对他自我中心网络的分析:
1.
完整自我中心网络创建
:
ego_2 = nx.ego_graph(G, 'Marius')
draw_graph(ego_2, font_size=12, show_names=True, node_size=4, edge_width=1)
马吕斯的自我中心网络与冉·阿让的截然不同,左下角有一个紧密连接的社区,右侧有一个马吕斯有好感的角色。
2.
移除中心节点
:
ego_2 = nx.ego_graph(G, 'Marius', center=False)
draw_graph(ego_2, font_size=12, show_names=True, node_size=4, edge_width=1)
移除中心节点后,网络没有出现孤立节点,表明其成员连接紧密,网络具有较强的弹性。
3.
节点列表和数量
:
sorted(ego_2.nodes)
nx.info(ego_2)
马吕斯的自我中心网络有19个节点和57条边,是一个相对简单的网络。
4.
重要节点
:同样使用度中心性评估节点重要性。
degcent = nx.degree_centrality(ego_2)
degcent_df = pd.DataFrame(degcent, index=[0]).T
degcent_df.columns = ['degree_centrality']
degcent_df.sort_values('degree_centrality', inplace=True, ascending=False)
degcent_df.head(10)
结果显示,一些节点的度中心性高于冉·阿让,这是因为他们属于紧密连接的社区,与更多成员相连。
5.
网络密度
:
nx.density(ego_2)
马吕斯的自我中心网络密度约为0.33,是冉·阿让网络密度的近三倍,这解释了移除中心节点时网络未破碎的原因。
伽弗洛什的自我中心网络
伽弗洛什是生活在巴黎街头的小男孩,其自我中心网络可能与成年人或社交广泛的人不同。
1.
完整自我中心网络创建
:
ego_3 = nx.ego_graph(G, 'Gavroche')
draw_graph(ego_3, font_size=12, show_names=True, node_size=4, edge_width=1)
伽弗洛什的自我中心网络显示他与他人连接紧密,顶部有Child1和Child2,移除中心节点时,有一个节点(MmeBurgon)会成为孤立节点,网络底部左右两侧似乎有两个社区。
2.
移除中心节点
:
ego_3 = nx.ego_graph(G, 'Gavroche', center=False)
draw_graph(ego_3, font_size=12, show_names=True, node_size=4, edge_width=1)
移除中心节点后,一个节点成为孤立节点,两个孩子形成一个小簇,其余连接组件包含两个不同的社区,冉·阿让位于这两个社区之间。
3.
节点列表和数量
:
sorted(ego_3.nodes)
nx.info(ego_3)
伽弗洛什的自我中心网络有22个节点和82条边,比主角冉·阿让的网络连接更紧密。
4.
重要节点
:
degcent = nx.degree_centrality(ego_3)
degcent_df = pd.DataFrame(degcent, index=[0]).T
degcent_df.columns = ['degree_centrality']
degcent_df.sort_values('degree_centrality', inplace=True, ascending=False)
degcent_df.head(10)
结果显示,安灼拉(Enjoiras)等多个节点的度中心性较高,他们属于连接紧密的社区。
5.
网络密度
:
nx.density(ego_3)
伽弗洛什的自我中心网络密度约为0.35,高于冉·阿让和马吕斯的网络。
若李的自我中心网络
若李是医科学生,也是革命学生组织“ABC之友社”的成员,以下是对他自我中心网络的分析:
1.
完整自我中心网络创建
:
ego_4 = nx.ego_graph(G, 'Joly')
draw_graph(ego_4, font_size=12, show_names=True, node_size=4, edge_width=1)
若李的自我中心网络非常独特,连接紧密,移除他的节点后,网络变化可能不大。
2.
移除中心节点
:
ego_4 = nx.ego_graph(G, 'Joly', center=False)
draw_graph(ego_4, font_size=12, show_names=True, node_size=4, edge_width=1)
移除中心节点后,网络依然完整,中心节点保持其核心地位,表明该网络具有很强的弹性。
3.
节点列表和数量
:
sorted(ego_4.nodes)
nx.info(ego_4)
若李的自我中心网络有12个节点和57条边,节点和边数量较少,但密度明显高于其他网络。
4.
重要节点
:
degcent = nx.degree_centrality(ego_4)
degcent_df = pd.DataFrame(degcent, index=[0]).T
degcent_df.columns = ['degree_centrality']
degcent_df.sort_values('degree_centrality', inplace=True, ascending=False)
degcent_df.head(10)
结果显示,巴霍雷(Bahorel)、伽弗洛什、博须埃(Bossuet)、古费拉克(Courfeyrac)和安灼拉的度中心性为1.0,表明他们与网络中的每个节点都有连接。
5.
网络密度
:
nx.density(ego_4)
若李的自我中心网络密度约为0.86,远高于其他角色的网络,这与他作为学生和革命组织成员的身份相符。
总结
通过对《悲惨世界》中四个角色的自我中心网络分析,我们可以得出以下结论:
| 角色 | 节点数量 | 边数量 | 网络密度 |
| ---- | ---- | ---- | ---- |
| 冉·阿让 | 36 | 76 | 0.12 |
| 马吕斯 | 19 | 57 | 0.33 |
| 伽弗洛什 | 22 | 82 | 0.35 |
| 若李 | 12 | 57 | 0.86 |
从上述表格可以看出,不同角色的自我中心网络在节点数量、边数量和网络密度上存在显著差异。网络密度反映了节点之间的连接紧密程度,密度越高,网络在移除中心节点时越具弹性。以自我为中心的网络分析有助于我们深入了解单个节点周围的社区结构和节点重要性,为社交网络分析提供了有力的工具。
流程图
graph LR
A[选择角色] --> B[创建完整自我中心网络]
B --> C[移除中心节点]
C --> D[去噪处理(可选)]
D --> E[获取节点列表和数量]
E --> F[评估重要节点]
F --> G[计算网络密度]
通过以上步骤,我们可以系统地进行以自我为中心的网络分析,深入挖掘社交网络中的信息。
以自我为中心的网络分析:《悲惨世界》角色社交网络洞察
不同角色自我中心网络的对比分析
为了更清晰地理解不同角色自我中心网络的特点,我们对之前分析的四个角色的网络进行进一步对比。
| 角色 | 网络特点 | 重要节点特征 | 网络弹性原因 |
|---|---|---|---|
| 冉·阿让 | 节点多但连接松散,移除中心节点后出现孤立节点 | 沙威度中心性高,处于核心地位 | 网络密度低,节点间连接不紧密 |
| 马吕斯 | 节点较少,有紧密连接社区,移除中心节点无孤立节点 | 紧密社区成员度中心性高 | 网络密度较高,成员连接紧密 |
| 伽弗洛什 | 节点少但边多,连接紧密,移除中心节点有孤立节点 | 安灼拉等多个节点度中心性高 | 虽有孤立节点但整体连接紧密 |
| 若李 | 节点和边少,但密度极高,移除中心节点网络完整 | 多个节点度中心性为 1.0 | 作为学生和革命组织成员,群体连接紧密 |
从这个表格中,我们可以直观地看到每个角色自我中心网络的独特之处。例如,冉·阿让的网络虽然规模较大,但连接松散,这可能反映出他在故事中的社交关系较为分散;而若李的网络密度极高,说明他所在的群体内部联系非常紧密。
自我中心网络分析的实际应用
自我中心网络分析在很多领域都有实际应用,以下是一些常见的场景:
- 社交网络研究 :在社交网络中,我们可以通过分析用户的自我中心网络来了解用户的社交圈子、影响力以及信息传播路径。例如,在社交媒体平台上,分析某个用户的好友网络,可以发现其在社交群体中的地位和作用。
- 市场营销 :企业可以利用自我中心网络分析来了解消费者的社交关系,从而制定更有效的营销策略。比如,通过分析消费者的朋友圈,找到具有影响力的节点,进行精准营销。
- 疾病传播研究 :在公共卫生领域,自我中心网络分析可以帮助我们了解疾病的传播路径和潜在的传播风险。通过分析患者的社交网络,确定可能被感染的人群,采取相应的防控措施。
操作步骤总结
为了方便大家进行自我中心网络分析,我们将整个操作流程总结如下:
- 选择分析节点 :确定要分析的节点,例如《悲惨世界》中的角色。
-
创建完整自我中心网络
:使用
nx.ego_graph()函数创建节点的自我中心网络。
python ego_network = nx.ego_graph(G, '节点名称') -
可视化网络
:使用绘图函数(如
draw_graph())可视化网络,便于观察网络结构。
python draw_graph(ego_network, font_size=12, show_names=True, node_size=4, edge_width=1) -
移除中心节点(可选)
:使用
nx.ego_graph()函数并设置center=False移除中心节点。
python ego_network = nx.ego_graph(G, '节点名称', center=False) -
去噪处理(可选)
:使用
nx.k_core()函数移除边数少于指定值的节点。
python denoised_network = nx.k_core(ego_network, 1) -
获取节点列表和数量
:使用
sorted()函数获取节点列表,使用nx.info()函数获取节点和边的数量。
python sorted(ego_network.nodes) nx.info(ego_network) -
评估重要节点
:使用度中心性等指标评估节点的重要性。
python degcent = nx.degree_centrality(ego_network) degcent_df = pd.DataFrame(degcent, index=[0]).T degcent_df.columns = ['degree_centrality'] degcent_df.sort_values('degree_centrality', inplace=True, ascending=False) degcent_df.head(10) -
计算网络密度
:使用
nx.density()函数计算网络密度。
python nx.density(ego_network)
深入思考与拓展
自我中心网络分析虽然为我们提供了很多有价值的信息,但也有一定的局限性。例如,它主要关注单个节点周围的社区,可能会忽略整个网络的全局结构。在实际应用中,我们可以结合全局网络分析方法,如 PageRank 算法等,来更全面地了解网络。
此外,随着数据量的不断增加和网络结构的日益复杂,如何高效地进行自我中心网络分析也是一个需要解决的问题。未来的研究可以探索更高效的算法和技术,以提高分析的速度和准确性。
流程图
graph LR
A[实际应用场景] --> B[社交网络研究]
A --> C[市场营销]
A --> D[疾病传播研究]
B --> E[分析用户社交圈子]
B --> F[确定用户影响力]
C --> G[了解消费者社交关系]
C --> H[精准营销]
D --> I[确定疾病传播路径]
D --> J[评估传播风险]
通过以上的分析和总结,我们可以看到以自我为中心的网络分析在社交网络研究和实际应用中具有重要的价值。它不仅可以帮助我们深入了解单个节点周围的社区结构和节点重要性,还可以为各个领域的决策提供有力的支持。希望大家通过本文的介绍,对自我中心网络分析有更深入的理解,并能够将其应用到实际问题中。
超级会员免费看
357

被折叠的 条评论
为什么被折叠?



