跳到主要内容

Sampling API

此文档主要详细介绍了Sampling API的使用说明

1. 概述

本手册介绍使用TuGraph的Sampling API接口。

2. 图数据预处理

在采样操作之前,根据图数据路径加载图数据,并映射成olapondb图分析类,代码如下:

galaxy = PyGalaxy(args.db_path) # 根据路径创建一个galaxy实例
galaxy.SetCurrentUser(args.username, args.password) # 设置当前用户
db = galaxy.OpenGraph('default', False) # 打开图数据库指定db
txn = db.CreateReadTxn() # 创建一个事务实例
olapondb = PyOlapOnDB('Empty', db, txn) # 根据图加载方式、图数据库实例、事务实例实例化OlapOnDB
del txn
del db
del galaxy

3. 图采样算子介绍

图采样算子在cython层实现,用于对输入的图进行采样处理,生成的NodeInfo用于保存feature属性、label属性等点信息,EdgeInfo用于保存边信息,这些元数据信息可以被用于特征抽取、网络嵌入等任务中。目前TuGraph图学习模块支持GetDB、NeighborSampling、EdgeSampling、RandomWalkSampling、NegativeSampling五种采样算子。

3.1.RandomWalk算子:

在给定的采样点周围进行指定次数的随机游走,得到采样子图。

Process(db_: lgraph_db_python.PyGraphDB, olapondb: lgraph_db_python.PyOlapOnDB, feature_num: size_t, sample_node: list, step: size_t, NodeInfo: list, EdgeInfo: list)

参数列表: db_: 图数据库实例。 olapondb: 图分析类。 feature_num: size_t类型,feature特征向量的长度。 sample_node: list类型,采样点列表。 step: size_t类型,采样步数。 NodeInfo: list类型,点属性字典的列表,表示点的元数据信息。 EdgeInfo: list类型,边属性字典的列表,表示边的元数据信息。 返回值: 无。

3.2.NeighborSample算子:

在给定采样点的一度邻居中采样一定数量的点,得到采样子图。

Process(db_: lgraph_db_python.PyGraphDB, olapondb: lgraph_db_python.PyOlapOnDB, feature_num: size_t, sample_node: list, nei_num: size_t, NodeInfo: list, EdgeInfo: list)

参数列表: db_: 图数据库实例。 olapondb: 图分析类。 feature_num: size_t类型,feature特征向量的长度。 sample_node: list类型,采样点列表。 nei_num: size_t类型,邻居采样点数。 NodeInfo: list类型,点属性字典的列表,表示点的元数据信息。 EdgeInfo: list类型,边属性字典的列表,表示边的元数据信息。 返回值: 无。

3.3.Nagetive算子:

采用负采样算法,生成不存在边的子图。

Process(db_: lgraph_db_python.PyGraphDB, olapondb: lgraph_db_python.PyOlapOnDB, feature_num: size_t, num_samples: size_t, NodeInfo: list, EdgeInfo: list)

参数列表: db_: 图数据库实例。 olapondb: 图分析类。 feature_num: size_t类型,feature特征向量的长度。 num_samples: size_t类型,生成不存在边的数量。 NodeInfo: list类型,点属性字典的列表,表示点的元数据信息。 EdgeInfo: list类型,边属性字典的列表,表示边的元数据信息。 返回值: 无。

3.4.EdgeSampling算子:

根据边采样率,生成采样边的子图。

Process(db_: lgraph_db_python.PyGraphDB, olapondb:lgraph_db_python.PyOlapOnDB, feature_num: size_t, sample_rate: double, NodeInfo: list, EdgeInfo: list,EdgeInfo: list)

参数列表: db_: 图数据库实例。 olapondb: 图分析类。 feature_num: size_t类型,feature特征向量的长度。 sample_rate: double类型,采样率。 NodeInfo: list类型,一个点属性字典的列表,表示点的元数据信息。 EdgeInfo: list类型,一个边属性字典的列表,表示边的元数据信息。 返回值: 无。

3.5.GetDB算子:

从数据库中获取图数据并转换成所需数据结构。

Process(db_: lgraph_db_python.PyGraphDB, olapondb:lgraph_db_python.PyOlapOnDB, feature_num: size_t, NodeInfo: list, EdgeInfo: list)

参数列表: db_: 图数据库实例。 olapondb: 图分析类。 feature_num: size_t类型,feature特征向量的长度。 NodeInfo: list类型,一个点属性字典的列表,表示点的元数据信息。 EdgeInfo: list类型,一个边属性字典的列表,表示边的元数据信息。 返回值: 无。

4. 用户自定义采样算法

用户也可以通过TuGraph Olap接口实现自定义采样算法,接口文档参见此处,该文档主要介绍图采样算法使用的相关函数的接口设计。