ItemBasedCFwithMetrics.py
这个文件与上一个.py文件相似,都是基于电影去构建KNN。区别在于这个文件是根据评估函数的评估指标进行排序从而达到推荐目的.评估函数文章详情请点击Evaluate
下面是经过注释源代码:
from MovieLens import MovieLens
from Evaluator import Evaluator
from surprise import KNNBasic
from time import time
import random
import numpy as np
np.random.seed(0)
random.seed(0)
# 加载数据集函数
def LoadMovieLensData():
ml = MovieLens()
print('Loading movie ratings..')
data = ml.loadMovieLensDataset()
# 计算电影的受欢迎程度排名以衡量新颖性
rankings = ml.getPopularityRanks()
return (ml, data, rankings)
# 加载推荐算法的通用数据集
(ml, evaluationData, rankings) = LoadMovieLensData()
# 创建一个评估类
evaluator = Evaluator(evaluationData, rankings)
# 基于电影的KNN
t0 = time()
sim_options_item = {'name': 'cosine', 'user_based': False}
itemKNN = KNNBasic(sim_options=sim_options_item)
# 把基于电影的KNN算法添加进待评估算法池中
evaluator.AddAlgorithm(itemKNN, "ItemBased")
# 对基于电影的KNN进行评估
evaluator.Evaluate(True)
# 根据评估指标排名计算打印推荐电影
evaluator.SampleTopNRecs(ml)
tt = time() - t0
print("Item based CF Model trained in %s seconds" % round(tt, 3))