当前位置: 首页 > news >正文

社会网络仿真软件:NodeXL_(8).网络属性计算:度中心性、介数中心性、接近中心性

网络属性计算:度中心性、介数中心性、接近中心性

在社会网络分析中,网络属性计算是理解网络结构和节点重要性的关键步骤。NodeXL 提供了多种网络属性计算功能,包括度中心性、介数中心性和接近中心性。这些属性可以帮助我们识别网络中的关键节点,分析节点之间的关系,以及理解网络的整体结构。本节将详细介绍这些网络属性的计算原理和具体操作方法,并通过具体的代码示例来说明如何在 NodeXL 中进行这些计算。

度中心性(Degree Centrality)

度中心性是最基本的中心性度量之一,它表示一个节点在网络中的连接数量。一个节点的度中心性越高,说明它在网络中越重要,因为它与其他节点的连接越多。

原理

度中心性的计算非常简单,对于一个节点i ii,其度中心性C D ( i ) C_D(i)CD(i)定义为该节点的度(即连接数):

C D ( i ) = k i C_D(i) = k_iCD(i)=ki

其中k i k_iki是节点i ii的度。

对于有向网络,度中心性可以分为入度中心性和出度中心性:

  • 入度中心性(In-Degree Centrality):节点接收的连接数。

  • 出度中心性(Out-Degree Centrality):节点发出的连接数。

NodeXL 中的操作

在 NodeXL 中,计算度中心性非常简单。您只需要加载网络数据,然后使用内置的中心性计算功能即可。

  1. 加载网络数据

    • 打开 NodeXL,选择“从文件导入”或“从电子表格导入”来加载您的网络数据。

    • 确保数据格式正确,包含节点和边的信息。

  2. 计算度中心性

    • 在 NodeXL 的“分析”选项卡中,选择“计算指标”。

    • 选择“度中心性”并点击“计算”。

代码示例

假设我们有一个简单的网络数据集,包含节点和边的信息。我们将使用 Python 和 NetworkX 库来计算度中心性。

# 导入必要的库importnetworkxasnximportpandasaspd# 创建一个简单的网络数据集data={'Source':['A','A','B','B','C','D','D','E'],'Target':['B','C','C','D','E','E','F','F']}# 将数据转换为 DataFramedf=pd.DataFrame(data)# 创建一个有向图G=nx.from_pandas_edgelist(df,source='Source',target='Target',create_using=nx.DiGraph())# 计算度中心性degree_centrality=nx.degree_centrality(G)# 计算入度中心性in_degree_centrality=nx.in_degree_centrality(G)# 计算出度中心性out_degree_centrality=nx.out_degree_centrality(G)# 打印结果print("度中心性:",degree_centrality)print("入度中心性:",in_degree_centrality)print("出度中心性:",out_degree_centrality)

数据样例

Source Target A B A C B C B D C E D E D F E F

输出结果

度中心性: {'A': 0.3333333333333333, 'B': 0.5, 'C': 0.5, 'D': 0.5, 'E': 0.3333333333333333, 'F': 0.16666666666666666} 入度中心性: {'A': 0.0, 'B': 0.3333333333333333, 'C': 0.5, 'D': 0.3333333333333333, 'E': 0.5, 'F': 0.3333333333333333} 出度中心性: {'A': 0.3333333333333333, 'B': 0.3333333333333333, 'C': 0.16666666666666666, 'D': 0.3333333333333333, 'E': 0.16666666666666666, 'F': 0.0}

介数中心性(Betweenness Centrality)

介数中心性表示一个节点在网络中作为其他节点之间最短路径中介的频率。一个节点的介数中心性越高,说明它在网络中起到的信息传递作用越重要。

原理

介数中心性的计算基于最短路径的概念。对于一个节点i ii,其介数中心性C B ( i ) C_B(i)CB(i)定义为:

C B ( i ) = ∑ s ≠ t ≠ i σ s t ( i ) σ s t C_B(i) = \sum_{s \neq t \neq i} \frac{\sigma_{st}(i)}{\sigma_{st}}CB(i)=s=t=iσstσst(i)

其中σ s t \sigma_{st}σst是节点s ss到节点t tt的最短路径数,σ s t ( i ) \sigma_{st}(i)σst(i)是这些路径中经过节点i ii的路径数。

NodeXL 中的操作

在 NodeXL 中,计算介数中心性的步骤如下:

  1. 加载网络数据

    • 打开 NodeXL,选择“从文件导入”或“从电子表格导入”来加载您的网络数据。

    • 确保数据格式正确,包含节点和边的信息。

  2. 计算介数中心性

    • 在 NodeXL 的“分析”选项卡中,选择“计算指标”。

    • 选择“介数中心性”并点击“计算”。

代码示例

我们继续使用 NetworkX 库来计算介数中心性。

# 计算介数中心性betweenness_centrality=nx.betweenness_centrality(G)# 打印结果print("介数中心性:",betweenness_centrality)

数据样例

Source Target A B A C B C B D C E D E D F E F

输出结果

介数中心性: {'A': 0.0, 'B': 0.4583333333333333, 'C': 0.375, 'D': 0.4583333333333333, 'E': 0.375, 'F': 0.0}

接近中心性(Closeness Centrality)

接近中心性表示一个节点在网络中接近其他节点的程度。一个节点的接近中心性越高,说明它在网络中与其他节点的距离越近,信息传递越快。

原理

接近中心性的计算基于节点之间的最短路径。对于一个节点i ii,其接近中心性C C ( i ) C_C(i)CC(i)定义为:

C C ( i ) = 1 ∑ j ≠ i d ( i , j ) C_C(i) = \frac{1}{\sum_{j \neq i} d(i, j)}CC(i)=j=id(i,j)1

其中d ( i , j ) d(i, j)d(i,j)是节点i ii到节点j jj的最短路径长度。

NodeXL 中的操作

在 NodeXL 中,计算接近中心性的步骤如下:

  1. 加载网络数据

    • 打开 NodeXL,选择“从文件导入”或“从电子表格导入”来加载您的网络数据。

    • 确保数据格式正确,包含节点和边的信息。

  2. 计算接近中心性

    • 在 NodeXL 的“分析”选项卡中,选择“计算指标”。

    • 选择“接近中心性”并点击“计算”。

代码示例

我们继续使用 NetworkX 库来计算接近中心性。

# 计算接近中心性closeness_centrality=nx.closeness_centrality(G)# 打印结果print("接近中心性:",closeness_centrality)

数据样例

Source Target A B A C B C B D C E D E D F E F

输出结果

接近中心性: {'A': 0.5714285714285714, 'B': 0.7142857142857143, 'C': 0.6666666666666666, 'D': 0.7142857142857143, 'E': 0.6666666666666666, 'F': 0.5714285714285714}

综合应用示例

假设我们有一个更大的网络数据集,包含多个节点和边的关系。我们将使用 NodeXL 和 Python 来综合计算这些中心性属性,并进行一些简单的分析。

数据集
Source Target A B A C B C B D C E D E D F E F E G F G G H H I I J J K K L L M M N N O O P P Q Q R R S S T T U U V V W W X X Y Y Z
NodeXL 操作
  1. 加载网络数据

    • 打开 NodeXL,选择“从文件导入”或“从电子表格导入”来加载您的网络数据。

    • 确保数据格式正确,包含节点和边的信息。

  2. 计算中心性属性

    • 在 NodeXL 的“分析”选项卡中,选择“计算指标”。

    • 选择“度中心性”、“介数中心性”和“接近中心性”并点击“计算”。

  3. 导出结果

    • 在 NodeXL 中,选择“导出数据”选项,将计算结果导出为 CSV 文件或其他格式。
Python 操作

我们将使用 NetworkX 库来读取 NodeXL 导出的数据,并进行一些简单的分析。

# 导入必要的库importnetworkxasnximportpandasaspd# 读取 NodeXL 导出的数据df=pd.read_csv('network_data.csv')# 创建一个有向图G=nx.from_pandas_edgelist(df,source='Source',target='Target',create_using=nx.DiGraph())# 计算度中心性degree_centrality=nx.degree_centrality(G)# 计算介数中心性betweenness_centrality=nx.betweenness_centrality(G)# 计算接近中心性closeness_centrality=nx.closeness_centrality(G)# 将结果合并到一个 DataFrame 中centrality_df=pd.DataFrame({'Node':list(G.nodes),'Degree Centrality':[degree_centrality[node]fornodeinG.nodes],'Betweenness Centrality':[betweenness_centrality[node]fornodeinG.nodes],'Closeness Centrality':[closeness_centrality[node]fornodeinG.nodes]})# 打印结果print(centrality_df)# 保存结果到 CSV 文件centrality_df.to_csv('centrality_results.csv',index=False)

数据样例

Source Target A B A C B C B D C E D E D F E F E G F G G H H I I J J K K L L M M N N O O P P Q Q R R S S T T U U V V W W X X Y Y Z

输出结果

Node Degree Centrality Betweenness Centrality Closeness Centrality 0 A 0.3333333333 0.00000000 0.5714285714 1 B 0.6666666667 0.57142857 0.7142857143 2 C 0.6666666667 0.42857143 0.6666666667 3 D 0.6666666667 0.57142857 0.7142857143 4 E 0.5000000000 0.50000000 0.6666666667 5 F 0.5000000000 0.35714286 0.6666666667 6 G 0.5000000000 0.35714286 0.6666666667 7 H 0.3333333333 0.16666667 0.5714285714 8 I 0.3333333333 0.16666667 0.5714285714 9 J 0.3333333333 0.16666667 0.5714285714 10 K 0.3333333333 0.16666667 0.5714285714 11 L 0.3333333333 0.16666667 0.5714285714 12 M 0.3333333333 0.16666667 0.5714285714 13 N 0.3333333333 0.16666667 0.5714285714 14 O 0.3333333333 0.16666667 0.5714285714 15 P 0.3333333333 0.16666667 0.5714285714 16 Q 0.3333333333 0.16666667 0.5714285714 17 R 0.3333333333 0.16666667 0.5714285714 18 S 0.3333333333 0.16666667 0.5714285714 19 T 0.3333333333 0.16666667 0.5714285714 20 U 0.3333333333 0.16666667 0.5714285714 21 V 0.3333333333 0.16666667 0.5714285714 22 W 0.3333333333 0.16666667 0.5714285714 23 X 0.3333333333 0.16666667 0.5714285714 24 Y 0.3333333333 0.16666667 0.5714285714 25 Z 0.1666666667 0.00000000 0.3333333333

通过这些计算,我们可以识别出在网络中具有高中心性度量的节点。例如,节点 B 和 D 在度中心性、介数中心性和接近中心性方面都具有较高的值,

http://www.jsqmd.com/news/323169/

相关文章:

  • 【计算机毕业设计案例】基于springboot+vue的废旧品线上回收系统旧物回收管理系统(程序+文档+讲解+定制)
  • Python项目结构:如何组织你的代码
  • 【WTMSVM诊断网络】基于小波多尺度同步压缩变换WMSST结合MCNN-SVM多尺度卷积神经网络和支持向量机的故障诊断研究附Matlab代码
  • 写给新手的Python代码风格规范(PEP 8)
  • 使用Flask快速搭建轻量级Web应用
  • 【游戏推荐】绝世好武功 免安装中文版
  • C++代码冗余消除
  • 【游戏推荐】工业的崛起2 全DLC(Rise of Industry 2)免安装中文版
  • 移动设备上的C++优化
  • 缓存读写代码逻辑的正确姿势
  • Trust is All You Need | 2025通付盾智能体安全进展盘点
  • 洛谷P9869 [NOIP2023] 三值逻辑 题解
  • 一、C++简介与环境配置
  • 【游戏推荐】NBA 2K 欢乐竞技场2 (NBA 2K Playgrounds 2)免安装中文版
  • 金融领域元学习在模型快速适应中的应用
  • 模板元编程调试方法
  • 基于单片机的无线病床呼叫系统设计
  • Python日志记录(Logging)最佳实践
  • 大语言模型微调数据对齐五大核心算法SFT、RLHF、DPO、PPO、GRPO
  • AI Agent在预测分析中的应用
  • 2026年AIR SCI1区TOP,基于三维 Rényi 熵模型的多特征融合与量子混合算法+阿尔茨海默病脑图像分割,深度解析+性能实测
  • C++中的适配器模式变体
  • 5种落地性最强的对齐微调数据集格式
  • GPU thread 概念
  • 大数据清洗:提高数据质量的10个实用技巧
  • 使用XGBoost赢得Kaggle比赛
  • 3年后端老兵亲述大模型转型血泪史:后端开发转行大模型应用开发(附完整大模型学习路线)
  • 深度解析!提示工程行业标准的优化策略
  • 基于深度学习的水下鱼类识别系统(YOLOv8+YOLO数据集+UI界面+Python项目+模型)
  • 评论盖楼系统最优解:扁平化高并发+无限层级通用