當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。