我写了一个电影推荐系统。我有20部电影推荐给用户,还有150部用户真正看过的电影。 如何使用sklearn在python中计算精度并在这两个列表中调用?
例如,我向用户推荐了10部电影,而用户确实看过该电影,重新调用的计算方式为:10/150, 精度计算为:10/20
答案 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