已知推荐结果排序,已知真实的结果,要求:用python对于给定的参数k,计算Precision@k和 Recall@k
时间: 2024-05-12 08:20:14 浏览: 4
假设推荐结果存储在一个列表中,真实结果存储在另一个列表中,我们可以使用以下代码来计算Precision@k和Recall@k:
```python
def precision_at_k(recommended, relevant, k):
"""计算Precision@k"""
recommended = recommended[:k]
count = 0
for item in recommended:
if item in relevant:
count += 1
return count / k
def recall_at_k(recommended, relevant, k):
"""计算Recall@k"""
recommended = recommended[:k]
count = 0
for item in recommended:
if item in relevant:
count += 1
return count / len(relevant)
```
使用示例:
```python
recommended = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
relevant = [1, 2, 3, 4, 5]
print(precision_at_k(recommended, relevant, 5)) # 输出0.8
print(recall_at_k(recommended, relevant, 5)) # 输出1.0
```
对于上述示例,推荐结果中前5个是[1, 2, 3, 4, 5],其中有4个是真实结果中的一部分,因此Precision@5为0.8;而真实结果中的所有元素都在前5个推荐结果中,因此Recall@5为1.0。