给出mean reciprocal rank的python实现代码
时间: 2023-05-30 12:07:57 浏览: 257
利用Python制作动态排名图的实现代码
以下是一个简单的Python实现,用于计算平均倒数排名(MRR):
```python
def mrr(predictions, targets):
"""
:param predictions: a list of lists of predicted labels
:param targets: a list of correct labels
:return: the mean reciprocal rank
"""
ranks = []
for i in range(len(targets)):
rank = 0
for j in range(len(predictions[i])):
if predictions[i][j] == targets[i]:
rank = 1 / (j + 1)
break
ranks.append(rank)
return sum(ranks) / len(ranks)
```
该函数需要两个参数:预测标签的列表和正确标签的列表。预测标签列表是一个包含多个列表的列表,其中每个子列表都包含一个样本的预测标签。正确标签列表包含每个样本的正确标签。
该函数首先创建一个空列表来存储每个样本的排名。然后,对于每个样本,它遍历其预测标签列表,并找到第一个匹配正确标签的标签。如果找到了匹配的标签,则计算其排名并将其添加到排名列表中。
最后,该函数计算平均倒数排名(MRR),即将所有排名相加并将其除以样本数。
请注意,该实现假定所有样本都至少有一个正确标签,并且每个样本的预测标签列表都按照其相关性排序。
阅读全文