Python推荐算法案例(1)——根据评分进行排序的电影推荐
Python推荐算法案例(1)——根据评分进⾏排序的电影推荐    本节通过⼀个电影推荐案例来介绍最简单的推荐模型——基于评分进⾏排序。
就如同⾖瓣电影⽹页上的top10电影排⾏榜⼀样,我们根据IMDB⽹站的数据建⽴了⼀个top10电影榜单。
操作步骤如下:
(1)决定⼀个指标或分数,对电影进⾏评价;
(2)计算每⼀部电影的分数;
(3)根据分数对电影进⾏排序,输出top10排⾏结果。
使⽤的数据链接:
电影最基本的⼀个评价指标是电影评分,但是直接使⽤电影评分存在⼀个问题,譬如,⼀个冷门的电影,只有10个观众评价了,平均分为9分,另外⼀个电影,有100,000⼈评分,且平均分为8.9分,那么能够认为第⼀部电影⽐第⼆部电影评分⾼,并将它推荐给其他⼈吗?显然这样是有问题的。
考虑到上⾯的问题,采⽤以下评分公式:
其中,v是某电影参与评分的观众的个数,
m是筛选的评分观众阈值,即,如果某个电影评分的个数低于阈值,则该电影将被忽略;
R是该电影的评分评分;
C是所有电影的平均分。
m的取值可以根据⾃⼰的⽬的⾃由选取。在下⾯的模型中,采⽤90分位值,即只选取评论⼈数为前10%的电影进⾏分析。
根据以上说明,python模型代码如下:
import pandas as pd
评价最高的电影from numpy import *
movies=pd.ad_csv('C:/Users/Ray/Desktop/recommand/movie_metadata/movie_metadata.csv')
movies.head()
movies1=movies.loc[:,['movie_title','num_voted_users','imdb_score']] movies1.head()
C=movies1['imdb_score'].mean()
print(C)
6.442137616498111
m=movies1['num_voted_users'].quantile(0.9)
print(m)
216562.0
q_py().loc[movies1['num_voted_users']>m]
q_movies1.shape
(505, 3)
def weighted_rating(x,m=m,C=C):
v=x['num_voted_users']
R=x['imdb_score']
return (v/(v+m)*R)+(m/(m+v)*C)
q_movies1['score']=q_movies1.apply(weighted_rating,axis=1)
q_movies1=q_movies1.sort_values('score',ascending=False)
q_movies1.head(10)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。