图算法(十七):共同邻居算法(Common Neighbors)【适用场景:用于电商、社交等多领域的推荐场景】【得到两个节点所共有的邻居节点,直观地发现社交场合中的共同好友,来推测两个节点之间的关系】

一、概述

共同邻居算法(Common Neighbors)是一种常用的基本图分析算法,可以得到两个节点所共有的邻居节点,直观地发现社交场合中的共同好友、以及在消费领域共同感兴趣的商品,进一步推测两个节点之间的潜在关系和相近程度。

适用场景:共同邻居算法(Common Neighbors)适用于电商、社交等多领域的推荐场景。

二、

三、




参考资料:








  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
共同邻居算法是链路预测比较经典的方法之一,它的基本思想是如果两个节点有许多共同邻居节点,那么它们之间很可能存在一条边。下面是一个简单的Python代码示例,演示如何使用共同邻居算法进行链路预测: ```python import networkx as nx import numpy as np # 构造 G = nx.karate_club_graph() # 划分训练集和测试集 edges = np.array(G.edges()) num_test = int(len(edges) * 0.2) np.random.shuffle(edges) test_edges = edges[:num_test] train_edges = edges[num_test:] # 构造训练集和测试集 train_graph = nx.Graph() train_graph.add_edges_from(train_edges) test_graph = nx.Graph() test_graph.add_edges_from(test_edges) # 计算共同邻居common_neighbors = {} for u, v in test_edges: neighbors1 = set(train_graph.neighbors(u)) neighbors2 = set(train_graph.neighbors(v)) common = neighbors1.intersection(neighbors2) common_neighbors[(u, v)] = len(common) # 按共同邻居数排序,预测前K条边 k = 10 sorted_edges = sorted(common_neighbors.keys(), key=lambda x: -common_neighbors[x]) pred_edges = sorted_edges[:k] # 计算准确率和召回率 true_positives = set(pred_edges).intersection(set(test_edges)) precision = len(true_positives) / k recall = len(true_positives) / len(test_edges) print('准确率:', precision) print('召回率:', recall) ``` 代码首先构造了一个karate_club_graph,然后将的边随机划分为训练集和测试集。接着使用训练集构造了一个新的,然后对测试集的每一条边计算共同邻居数,并按共同邻居数排序。预测前K条边作为预测结果,然后计算准确率和召回率。需要注意的是,在实际应用还需要进行交叉验证等步骤来评估模型性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值