matrixFactorizationSVDppwithMetrics.py
这个.py文件和上一个文件非常相似,只是在算法上进行了升级,把SVD算法升级为了SVD++算法,但是使用的仅仅是默认参数。
下面是详细注释代码:
from MovieLens import MovieLens
from surprise import SVDpp
from Evaluator import Evaluator
import random
import numpy as np
from time import time
# 设置相同的随机种子
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)
# SVD++(SVD的改进算法)算法
SVDPlusPlus = SVDpp() # 使用surprise内置的SVDpp算法,使用默认参数
# 把SVD++算法加到评估算法池里
evaluator.AddAlgorithm(SVDPlusPlus, "SVD++")
t0 = time()
# 基于所有评估指标的评估
evaluator.Evaluate(True)
# 输出该算法的推荐结果
evaluator.SampleTopNRecs(ml)
tt = time() - t0
print("SVDpp Algorithm in %s seconds" % round(tt, 3))