概述
Struc2Vec游走是一种有偏的随机游走(Biased Random Walk)。这是Struc2Vec框架的关键组成部分之一,其中游走是在构建的带权多层图中而不是在原图中进行的。详情请参考Struc2Vec算法。
语法
- 命令:
algo(random_walk_struc2vec)
- 参数:
名称 |
类型 |
规范 |
默认 |
可选 |
描述 |
---|---|---|---|---|---|
ids / uuids | []_id / []_uuid |
/ | / | 是 | 指定游走起点的ID/UUID;忽略表示指定全部点 |
walk_length | int | ≥1 | 1 |
是 | 每次游走的深度,即访问的节点数量 |
walk_num | int | ≥1 | 1 |
是 | 从每个指定节点开始的游走次数 |
k | int | [1,10] | / | 否 | 构造的带权多层图的层数,不能超过图的直径 |
stay_probability | float | (0,1] | / | 否 | 留在当前层游走的概率 |
limit | int | ≥-1 | -1 |
是 | 返回的结果条数,-1 返回所有结果 |
示例
示例图如下:
![](https://img.ultipa.cn/draw/draw_8747efdee6d844e9b219cb7e31fa6da2.jpg?v='1692006469224')
文件回写
配置项 |
回写内容 |
描述 |
---|---|---|
filename | _id ,_id ,... |
访问的节点的ID |
algo(random_walk_struc2vec).params({
walk_length: 5,
walk_num: 1,
k: 4,
stay_probability: 0.8
}).write({
file:{
filename: 'walks'
}})
结果:文件walks
J,G,I,G,
I,H,I,H,G,
H,G,H,I,H,
G,H,I,G,
F,G,H,I,H,
E,C,B,C,
D,C,E,F,G,
C,E,C,A,C,
B,A,D,E,
A,B,A,D,
直接返回
别名序号 | 类型 | 描述 |
列名 |
---|---|---|---|
0 | []perWalk | 访问的节点的UUID列表 | [_uuid, _uuid, ...] |
algo(random_walk_struc2vec).params({
ids: ['J'],
walk_length: 6,
walk_num: 3,
k: 4,
stay_probability: 0.8
}) as walks
return walks
结果:walks
[10, 6, 3, 6] |
[10, 7, 6, 5, 6, 5] |
[10, 7, 10, 7, 6, 7] |
流式返回
别名序号 | 类型 | 描述 |
列名 |
---|---|---|---|
0 | []perWalk | 访问的节点的UUID列表 | [_uuid, _uuid, ...] |
algo(random_walk_struc2vec).params({
ids: ['J'],
walk_length: 6,
walk_num: 30,
k: 5,
stay_probability: 0.7
}).stream() as walks
where size(walks) == 6
return walks
结果:walks
[10, 7, 6, 5, 3, 4] |
[10, 7, 8, 7, 6, 5] |
[10, 7, 6, 4, 6, 7] |