本文使用某KTV客户端线上点歌数据集,数据格式为:歌曲id,用户id,点唱次数,采用基于流行度的推荐和基于物品的系统过滤推荐,并画出PR图,给出实验结论:基于物品的推荐在推荐精确度上远超过基于流行度的推荐。
%matplotlib inline
import pandas
from sklearn.model_selection import train_test_split
import numpy as np
import time
from sklearn.externals import joblib
import recommender_live.Recommenders as Recommenders
import recommender_live.Evaluation as Evaluation
加载点歌数据
p = pandas.read_csv('train_data_wx.log', names=['user_id','song_id','listen_count'], dtype=str)
p['listen_count'] = p['listen_count'].astype(int)
print(p.dtypes)
print(p.head())
user_id object
song_id object
listen_count int64
dtype: object
user_id song_id listen_count
0 5333266 10008659 2
1 5333266 00012087 1
2 5333266 00022944 6
3 58290767 14004356 1
4 58290767 10009753 1
数据集长度
print(len(p))
#取部分数据试验
p = p.head(20000)
7225681
找出数据集中的流行歌曲
song_grouped = p.groupby(['song_id']).agg({
'listen_count': 'count'}).reset_index()
grouped_sum = song_grouped['listen_count'].sum()
song_grouped['percentage'] = song_grouped['listen_count'].div(grouped_su