Precision@N

Precision@N这个指标最初是针对信息检索领域的。
一般来说,搜索结果前几项的准确性比较重要,假设说,搜索出来的前几条结果就是和搜索词不相关的,即使后面的结果都是相关的,那么这个信息检索系统也是不能令人满意的。因此,需要一些指标来度量前几个结果的准确率,P@N就是这样一种指标,它的意思就是Precision at top-N,就是搜索结果前N个的准确率,通过N比较小,因为就是要度量搜索结果前几条的准确率,如P@5,P@10。写成公式就是下面这样:
P @ N = 与 检 索 相 关 / N P@N = 与检索相关/N P@N=/N

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
以下是使用 DeepWalk 进行图嵌入和网络重构,并使用 precision@5 评价的 Python 代码: ```python import networkx as nx from gensim.models import Word2Vec from sklearn.metrics.pairwise import cosine_similarity # 加载图数据 G = nx.read_edgelist('graph.txt', nodetype=int) # 使用 DeepWalk 进行图嵌入 model = Word2Vec(nx.random_walk.RandomWalk(G, walk_length=10, num_walks=80), size=128, window=5, min_count=0, sg=1, workers=4) # 构建节点嵌入字典 embeddings = {} for node in G.nodes(): embeddings[node] = model.wv[str(node)] # 重新构建图 new_edges = [] for node in G.nodes(): sim_list = [] for other_node in G.nodes(): if node != other_node: sim_list.append((other_node, cosine_similarity([embeddings[node]], [embeddings[other_node]])[0][0])) sim_list = sorted(sim_list, key=lambda x: x[1], reverse=True) new_edges.extend([(node, n) for n, _ in sim_list[:5]]) new_G = nx.Graph() new_G.add_nodes_from(G.nodes()) new_G.add_edges_from(new_edges) # 评价重构结果 precision_5 = 0 for node in G.nodes(): neighbors = [n for n, _ in sorted(new_G[node].items(), key=lambda x: x[1], reverse=True)[:5]] precision_5 += len(set(neighbors) & set(G[node])) / 5.0 print("Precision@5: %.4f" % (precision_5 / len(G.nodes()))) ``` 在代码中,我们首先加载了图数据,然后使用 `gensim` 库中的 `Word2Vec` 模型对图进行嵌入学习。接着,我们将所有节点的嵌入向量存储到一个字典中。然后,我们对每个节点,找到与其最相似的前5个节点,并将其作为新图中该节点的邻居节点。最后,我们使用 `precision@5` 评价了重构图的效果。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值