torch_geometric.transforms.RandomLinkSplit
- class RandomLinkSplit(num_val: Union[int, float] = 0.1, num_test: Union[int, float] = 0.2, is_undirected: bool = False, key: str = 'edge_label', split_labels: bool = False, add_negative_train_samples: bool = True, neg_sampling_ratio: float = 1.0, disjoint_train_ratio: Union[int, float] = 0.0, edge_types: Optional[Union[Tuple[str, str, str], List[Tuple[str, str, str]]]] = None, rev_edge_types: Optional[Union[Tuple[str, str, str], List[Optional[Tuple[str, str, str]]]]] = None)[source]
Bases:
BaseTransform执行边缘级别的随机分割,将
Data或HeteroData对象分割为训练集、验证集和测试集(功能名称:random_link_split)。分割的方式是确保训练集不包含验证集和测试集中的边;验证集不包含测试集中的边。from torch_geometric.transforms import RandomLinkSplit transform = RandomLinkSplit(is_undirected=True) train_data, val_data, test_data = transform(data)
- Parameters:
num_val (int 或 float, 可选) – 验证边的数量。 如果设置为 \([0, 1]\) 中的浮点值,则表示 包含在验证集中的边的比例。 (默认:
0.1)num_test (int 或 float, 可选) – 测试边的数量。 如果设置为 \([0, 1]\) 范围内的浮点值,则表示 包含在测试集中的边的比例。 (默认:
0.2)is_undirected (bool) – 如果设置为
True,则假定图是无向的,并且正负样本不会在不同分割之间泄露(反向)边的连通性。这只会影响图的分割,标签数据不会以无向方式返回。此选项在二分边类型或edge_type != rev_edge_type时被忽略。(默认值:False)key (str, optional) – 保存真实标签的属性的名称。 如果
data[key]不存在,它将自动创建并代表一个二分类任务 (1= 边,0= 无边)。 如果data[key]存在,它必须是一个从0到num_classes - 1的分类标签。 在负采样之后,标签0代表负边, 而标签1到num_classes代表正边的标签。(默认:"edge_label")split_labels (bool, 可选) – 如果设置为
True,将会分割 正负标签并将它们分别保存在不同的属性"pos_edge_label"和"neg_edge_label"中。 (默认:False)add_negative_train_samples (bool, optional) – 是否添加负训练样本用于链接预测。 如果模型已经执行了负采样,则应将该选项设置为
False。 否则,除非再次执行负采样,否则添加的负样本将在训练迭代中保持不变。 (默认值:True)neg_sampling_ratio (float, optional) – 采样的负边与正边数量的比率。(默认值:
1.0)disjoint_train_ratio (int 或 float, 可选) – 如果设置为大于
0.0的值,训练边将不会用于消息传递和监督。相反,disjoint_train_ratio边将用作训练期间的监督的真实标签。(默认值:0.0)edge_types (Tuple[EdgeType] 或 List[EdgeType], 可选) – 用于在操作
HeteroData对象时执行边级别拆分的边类型。 (默认:None)rev_edge_types (Tuple[EdgeType] or List[Tuple[EdgeType]], optional) –
edge_types的反向边类型,用于在操作HeteroData对象时使用。 这将确保反向的边会被相应地分割,以防止任何数据泄露。 如果不存在反向连接,可以为None。 (默认值:None)