当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python cugraph.link_prediction.jaccard.jaccard用法及代码示例


用法:

cugraph.link_prediction.jaccard.jaccard(input_graph, vertex_pair=None)

计算由边连接的每对顶点之间或用户指定的任意顶点对之间的 Jaccard 相似度。 Jaccard 相似度定义为两个集合之间的交集体积除以它们并集的体积之比。在图的上下文中,顶点的邻域被视为一个集合。每条边的 Jaccard 相似度权重表示基于相邻顶点的相对相似度的顶点之间的连接强度。如果指定了第一个但没有指定第二个,反之亦然,将抛出异常。

注意:如果未指定vertex_pair 参数,则 cugraph.jaccard 的行为与 networkx.jaccard_coefficient 的行为不同。

cugraph.jaccard,在没有指定顶点对列表的情况下,将使用图形的边来构造顶点对列表,并将返回这些顶点对的 jaccard 系数。

networkx.jaccard_coefficient,在没有指定的顶点对列表的情况下,将返回一个上三角密集矩阵,不包括对角线以及由图中边直接连接的顶点对,jaccard 系数。从技术上讲,networkx 在这个上三角矩阵中返回一个惰性迭代器,其中在取消引用迭代器时计算实际的 jaccard 系数。如果图中的顶点数量很大(100,000 个顶点将在该迭代器中产生 49 亿个值),则计算结果的密集矩阵是不可行的。

如果您的图表足够小(或者您有足够的内存和耐心),您可以通过执行以下操作获得作为 networkx 解决方案一部分的有趣(非零)值:

>>> gdf = cudf.read_csv(datasets_path / 'karate.csv', delimiter=' ',
...                     dtype=['int32', 'int32', 'float32'], header=None)
>>> G = cugraph.Graph()
>>> G.from_cudf_edgelist(gdf, source='0', destination='1')
>>> pairs = G.get_two_hop_neighbors()
>>> df = cugraph.jaccard(G, pairs)

但请记住,cugraph 将使用您请求的整个解决方案填充数据帧,因此您需要足够的内存来存储 2 跳邻域数据帧。

参数

graphcugraph.Graph

cuGraph 图形实例,应包含作为边列表的连接信息(此算法不使用边权重)。该图应该是无向的,其中无向边由两个方向的有向边表示。如果不存在邻接列表,则将计算该邻接列表。

vertex_paircudf.DataFrame,可选(默认=无)

一个 GPU 数据帧,由代表顶点对的两列组成。如果提供,则为给定的顶点对计算 Jaccard 系数。如果未提供 vertex_pair,则当前实现计算图中所有相邻顶点的 jaccard 系数。

返回

dfcudf.DataFrame

GPU 数据帧大小为 E(默认)或包含 Jaccard 权重的给定对(第一、第二)的大小。排序是相对于邻接列表的,或者是由指定的顶点对给出的。

df[‘source’]cudf.Series

源顶点 ID(如果指定,将与第一个相同)

df[‘destination’]cudf.Series

目标顶点 ID(如果指定,将与第二个相同)

df[‘jaccard_coeff’]cudf.Series

计算的源顶点和目标顶点之间的 Jaccard 系数

例子

>>> gdf = cudf.read_csv(datasets_path / 'karate.csv', delimiter=' ',
...                     dtype=['int32', 'int32', 'float32'], header=None)
>>> G = cugraph.Graph()
>>> G.from_cudf_edgelist(gdf, source='0', destination='1')
>>> df = cugraph.jaccard(G)

相关用法


注:本文由纯净天空筛选整理自rapids.ai大神的英文原创作品 cugraph.link_prediction.jaccard.jaccard。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。