我写了一个电影推荐系统。我有向用户推荐的20部电影和150部最终用户真正看过的电影的列表。我如何在python中计算出这两个列表中的精确性和回忆性呢?
例如,我推荐给用户的10部电影是用户真实看到的,计算结果是: 10/150,精度计算是: 10/20。
发布于 2019-05-02 12:48:16
据我所读,最简单的方法是在两个集合之间使用intersection。
我设想您对电影使用某种标识符,这样列表就不能有副本(例如,您可能不会推荐同一部电影两次),这意味着您可以使用集合及其内置的intersection。
recommendations={"movie1", "movie2", "movie3"}
saw={"movie1", "movie2", "movie4", "movie5", "movie6"}
"recommended movies saw by the user"
recommendations.intersection(saw)
>>> {"movie1", "movie2"}
# To get the "number of recommended movie that the user saw":
movie_intersect = len(recommendations.intersection(saw))
movie_intersect
>>> 2
# Precision is just:
movie_intersect/len(recommendations)
>>> 0.666666666666666667
# Recall:
movie_intersect/len(saw)
>>> 0.4https://stackoverflow.com/questions/55952408
复制相似问题