首页 > 解决方案 > Neo4j,图形数据科学库:计算介数返回负值

问题描述

在计算我的图的中介中心性时,某些节点在使用“无向”作为关系方向时会收到负值。在带有 gds 1.2.2 的 Neo4j 4.0.6 中发生。但也在旧版本中。图形本身应该没问题,将其导出到 Gephi,然后计算中间因子返回所有正值。

这是查询:

CALL gds.alpha.betweenness.stream({
    nodeProjection: 'poi',
    relationshipProjection: {
        similar: {
            type: 'similar',
            orientation: 'UNDIRECTED'
        }
    }
}) 
YIELD nodeId, centrality
RETURN gds.util.asNode(nodeId).OsmID AS id, centrality
ORDER BY centrality ASC

结果:介数计算后的负值

使用的图表:graphml 文件 (4MB)

在这一点上我几乎没有想法,查询应该没问题,图表也应该没问题。任何帮助将不胜感激。

标签: neo4jgraph-algorithmgraph-data-science

解决方案


在 Graph Data Science 版本 1.3 中,中介中心性最近刚刚从 alpha 层提升到生产质量。目前只有1.3的预览版。GDS 在GitHub上可用。我已经测试了您的数据集,看起来新版本的问题不会持续存在。因此,目前,您可以使用 GDS 1.3 版本的预览版,也可以等待几天,直到 GA 版本可用。唯一改变的是输出语法,其中中心性已重命名为得分。

CALL gds.betweenness.stream({
    nodeProjection: '*',
    relationshipProjection: {
        similar: {
            type: 'similar',
            orientation: 'UNDIRECTED'
        }
    }
}) 
YIELD nodeId, score
RETURN gds.util.asNode(nodeId).OsmID AS id, score
ORDER BY score ASC

希望这可以帮助。


推荐阅读