问题标签 [graph-data-science]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
80 浏览

neo4j - ArticleRank 似乎忽略了关系权重

我正在创建我的第一个 Neo4j (4.0.4) 应用程序,并尝试根据加权 ArticleRank 算法对结果进行排序。到目前为止,一切都很直观,但我无法弄清楚为什么关系权重不会影响 ArticleRank 分数。

给定架构:

当我运行此查询时:

我得到与运行此查询时相同的结果:

结果,即:

鉴于关系具有不同的权重,在使用权重时运行 ArticleRank 算法会产生与不使用权重时相同的分数吗?

0 投票
1 回答
48 浏览

nlp - 查询时序序列数据中的子序列

我面临一个问题,我觉得图论或图数据库中有解决方案。我在这些领域的知识非常有限。我希望有人能认出我的问题,也许可以指出用于解决它的技术的名称。

简化示例:

我正在处理时间序列的状态。一个简单的例子,只有两种状态:

我可以将其转换为具有两个节点(T 和 F)的图,其中状态中的“停留时间”是一个属性(在括号中):

我的问题的一个例子是编写一个“查询”来提取与此模式匹配的任何子序列F(>=2) -> T(<10)。在上面的示例中,我的查询将提取子序列: F(3) -> T(3)

但如果它存在于数据集中,查询也可以提取如下序列:

我提出的示例已简化:有两个以上的状态,并且更高级的查询将允许循环,其中这些循环可以限制在循环中花费的总时间或可以完成的循环数量:例如

我的循环可能会被限制为不超过 10 次迭代,或者不超过 10 个时间单位。锦上添花的是找到这样的序列

翻译为:以 T 开始的序列(并在 T 中停留n 个时间单位),然后是 F 状态,它在 F 中停留的时间小于n(即,F 比前面的 T 短)

我尝试了什么

我最初想将其转换为字符串,并使用 RegEx 来提取匹配项。正则表达式可以满足我的所有需求,但无法理解像“大于”这样的算术。我想我可以保留我的原始时间序列状态(TFFFTTTF)并对此进行正则表达式......但它看起来很丑陋。

自然语言处理、图论、图数据库等领域会出现类似问题。我不知道如何在我的图表中编码“状态持续时间”属性。我不知道是否有某种“行业标准”查询语言用于图形数据库中的子序列搜索。

问题

- 有没有解决这些子序列提取问题的框架,如果有,是怎么调用的?有“最佳实践”吗?我应该如何构建我的数据?是否有查询语言来查询序列数据库中的子序列?

0 投票
1 回答
312 浏览

neo4j - 在 Neo4j v4.0 中,Graph Data Science Library:为什么 Native Projection 在性能方面优于 Cypher Projection?

文档在目录中创建图表声称在使用 Native Projection 而不是 Cypher Projection 时具有这种性能优势,但没有给出太多解释。

原生投影
提供最佳性能...

Cypher 投影
更灵活、更具表现力的方法,较少关注性能。

据我了解,所有预测都将结束:

图形投影完全存储在内存中,使用针对拓扑和属性查找操作优化的压缩数据结构。

那么为什么性能增益呢?

此外,假设获得的性能是用于加载(具体化)投影图或稍后进行处理,例如使用 PageRank 算法?

0 投票
1 回答
291 浏览

neo4j - 在 grapheneDB 上正确配置图形数据科学插件

我有一个在 neo4j 桌面本地与插件完全配合的图表。我已经在我的 grapheneDB 实例中复制了该图中的所有内容。当我收到错误时,我无法使用 gds 程序:

我知道要解决这个问题,我需要将这两行添加到 config/properties 文件中:

我只是不知道如何在 grapheneDB 上做到这一点,我已经阅读了我能找到的所有文档。

我尝试通过添加 jar 文件作为存储过程添加 gds 插件,然后将其添加为带有 zip 文件的服务器扩展,该 zip 文件包含 jar 文件和上面在 neo4j-server.properties 文件中提到的两个配置行。

当添加为服务器扩展时,我可以告诉 neo4j 根本没有找到 gds 插件。我只是缺少属性文件中的位置吗?还是我在存储过程上传方法中遗漏了一些明显的东西?

使用开发免费层 graphenedb、Neo4j 社区版 3.5.17 和图形数据科学 1.1.1

谢谢

0 投票
3 回答
517 浏览

web-scraping - 任何人都可以建议数据科学项目

我刚刚完成了数据科学主题,我想在数据科学中进行一个迷你项目,任何人都可以建议我一个项目。我在谷歌搜索了很多,但我没有找到任何项目可以推荐一个项目

0 投票
1 回答
838 浏览

neo4j - Neo4j - 图形数据科学库 - 如何对图形目录中的命名图形进行密码查询?

从 Neo4j 主图创建命名图已记录在案。此外,还知道如何列出、删除、检查命名图是否已经存在,例如CALL gds.graph.exists('my-store-graph') YIELD exists;

但是,我想知道是否有针对刚刚创建的命名图进行密码查询的任何方法?

一种解决方法是将此命名图推送到离线/空的Neo4j 图中,即CALL gds.beta.graph.export('my-graph', { dbName: 'mydatabase' }). 但是,这种方法不太方便,因为我们经常想在应用之前检查命名图是否正确投影,例如在其上的 PageRank。并且预测可以是一个反复试验的循环。

0 投票
1 回答
46 浏览

neo4j - 我的匹配/合并过程没有在 Neo4J 数据库中创建关系

我对 Neo4j/cypher/graph 数据库非常陌生,并且一直在尝试按照Neo4j 教程导入我在 a 中的数据csv并创建关系。

下面的代码在读取数据、创建节点和设置属性方面做了我想要的。

现在我有了我想要的节点(卖家和买家),我想链接买家和卖家。我为此尝试的代码是:

查询运行,但我没有得到任何关系:

Query executed in 294ms. Query type: WRITE_ONLY. No results.

由于我没有要求RETURN任何东西,我认为“无结果”评论是正确的,但是当我查看数据库的元数据时,没有出现任何关系。另外,我的数据有 ~220K 行,所以 294ms 似乎很快。

编辑:在@cybersam 的提示下,我尝试了这个查询: MATCH p=(:Seller)-[:SOLD_TO]->(:Buyer) RETURN p,它给出了No results.

为清楚起见,我的数据中有两个字段是关系的核心: sellerbuyer,卖家向买家出售商品的位置。卖家标识符是重复的,但对于每个卖家来说,都有唯一的卖家-买家对。

我需要在我的代码中修复什么来获得sellersand之间的关系buyers?谢谢!

0 投票
1 回答
324 浏览

neo4j - Neo4j,图形数据科学库:计算介数返回负值

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

这是查询:

结果:介数计算后的负值

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

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

0 投票
1 回答
188 浏览

neo4j - 我可以使用带有乘法而不是加法的neo4j gds最短路径算法吗?

我使用neo4j数据库来计算节点之间的最短路径。整个图包括400K节点。当我使用加法运算计算权重时,我可以使用如下所示的shortestPath算法,但是如果我想使用乘法运算应该怎么做节点的权重?

0 投票
1 回答
259 浏览

neo4j - 如何在 Neo4j 中将同一社区的节点与 Cypher 合并?

有一个图,它的每个节点都包含属性communityId来指示该节点属于哪个社区。节点通过关系连接,LINK关系包含weight属性。

我想要的是把同一个社区的那些节点合并成一个大节点。这些大节点(又名社区)之间的链接必须合理地合成/组合:链接的weight属性必须根据每个社区中相互连接的各个节点进行累加。必须尊重链接的方向。

在结果图中,我只会看到连接的社区节点。

最接近的函数是Merge Nodes函数apoc.refactor.mergeNodes()。但是,我对结果不满意,因为:

  • 问题一:结果社区节点有自链接。
  • 问题 2:链接的权重没有合并,尽管文档是这样说的。

问题 1 可以通过再编写一个 Cypher 来删除自链接来解决。但是问题 2 只能通过对 Graph 的低级访问来解决(mergeNodes()如上)。

是否有任何优雅的方法可以一次性获得我想要的图表(社区节点)?或者至少,必须以某种方式解决问题 2。

再现性

图形:

在此处输入图像描述

暗号:

在此处输入图像描述

系统要求

  • 视窗 8.1 x64
  • Neo4j 桌面 v1.3.4(引擎 v4.1.1。)
  • APOC v4.1.0.2
  • 图数据科学库 v1.3.2