首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何规范PageRank成绩

如何规范PageRank成绩
EN

Stack Overflow用户
提问于 2018-10-30 22:56:49
回答 1查看 771关注 0票数 0

我在一组节点上运行PageRank,其中每个节点都有一个属性year。如何根据PageRank属性计算所有year分数的平均值?也就是说,如果有100个节点,总共有20个不同的year值,我想计算20个平均PageRank值。

然后,对于每个节点,我想根据该年的PageRank分数与论文的平均PageRank分数之间的差异(该年的平均值是基于对year属性具有相同值的所有节点的PageRank分数)来计算一个缩放分数。

运行PageRank的代码是:CALL algo.pageRank.stream( 'MATCH (p:Paper) WHERE p.year < 2015 RETURN id(p) as id', 'MATCH (p1:Paper)-[:CITES]->(p2:Paper) RETURN id(p1) as source, id(p2) as target', {graph:'cypher', iterations:20, write:false, concurrency:20}) YIELD node, score WITH *, node.title AS title,

代码语言:javascript
复制
     `node.year AS year,          score AS page_rank     ORDER BY page_rank DESC     LIMIT 10000     RETURN          title,         year,          page_rank;`

如何更改此代码以返回缩放分数?

任何帮助都是非常感谢的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-31 02:11:16

这个查询应该返回每个year/title组合的year(作为绝对值)(缩放分数越低,标题的page_rank越接近该年的平均值):

代码语言:javascript
复制
CALL algo.pageRank.stream(
  'MATCH (p:Paper) WHERE p.year < 2015 RETURN id(p) as id',
  'MATCH (p1:Paper)-[:CITES]->(p2:Paper) RETURN id(p1) as source, id(p2) as target',
  {graph:'cypher', iterations:20, write:false, concurrency:20})
YIELD node, score
WITH 
  node.title AS title,
  node.year AS year, 
  score AS page_rank
ORDER BY page_rank DESC
LIMIT 10000
WITH year, COLLECT({title: title, page_rank: page_rank}) AS data, AVG(page_rank) AS avg_page_rank
UNWIND data AS d
RETURN year, d.title AS title, ABS(d.page_rank-avg_page_rank)/avg_page_rank AS scaled_score;

您还可能希望对结果进行排序(例如,通过yearscaled_score)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53074040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档