如何在python中计算精度和召回2个列表

时间:2019-05-02 12:24:26

标签: python scikit-learn precision-recall

我写了一个电影推荐系统。我有20部电影推荐给用户,还有150部用户真正看过的电影。 如何使用sklearn在python中计算精度并在这两个列表中调用?

例如,我向用户推荐了10部电影,而用户确实看过该电影,重新调用的计算方式为:10/150, 精度计算为:10/20

1 个答案:

答案 0 :(得分:0)

根据我的阅读,最简单的方法是在两组之间使用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.4