JavaScript is required

使用Neo4j图数据科学库(GDS)实现中心度分析

计算PageRank、度中心性、亲密中心性、介数中心性和各节点的度数

笔记#Neo4j#图数据库#中心度分析#PageRank

安装并加载GDS库

​ 确保已安装并启用GDS插件。若未安装,需从Neo4j官网下载对应版本。 ​

创建图投影

在 GDS 中创建内存中的图投影:

text
CALL gds.graph.project(
  'nodeGraph',      // 图名称
  'Node',           // 节点标签
  'NEIGHBOR',       // 关系类型
  {
    nodeProperties: ['degree'],  // 需要加载的节点属性
    relationshipProperties: {}  // 关系属性(可选)
  }
);


运行度中心性算法并写入属性

使用gds.degree.write方法计算每个节点的度(可指定入度、出度或总度数),并将结果存储为节点属性degree:

text
CALL gds.degree.write('nodeGraph', {
    writeProperty: 'degree',   // 写入的属性名
    orientation: 'UNDIRECTED'  // 方向:UNDIRECTED(总度数)、NATURAL(出度)、REVERSE(入度)
})
YIELD nodePropertiesWritten

计算中心性指标

1. PageRank

text
CALL gds.pageRank.write('nodeGraph', {
  maxIterations: 20,
  dampingFactor: 0.85,
  writeProperty: 'pagerank'
});

2. 度中心性 (Degree Centrality)

text
CALL gds.degree.write('nodeGraph', {
  writeProperty: 'degree_centrality'
});

3. 亲密中心性 (Closeness Centrality)

text
CALL gds.closeness.write('nodeGraph', {
  writeProperty: 'closeness_centrality'
});

4. 介数中心性 (Betweenness Centrality)

text
CALL gds.betweenness.write('nodeGraph', {
  writeProperty: 'betweenness_centrality'
});


查询结果

text
MATCH (n:Node)
RETURN
  n.address AS Address,
  n.pagerank AS PageRank,
  n.degree_centrality AS DegreeCentrality,
  n.closeness_centrality AS ClosenessCentrality,
  n.betweenness_centrality AS BetweennessCentrality
ORDER BY PageRank DESC;
text