day = min(self.nDays - 1, int((tmp - self.min_time_in_seconds) / 86400)) predict = self.prediction(userid, itemid, day) mean_squared_error += math.pow((rating - predict), 2) c += 1 meanSuaredError = mean_squared_error / c meanSuaredError = math.sqrt(meanSuaredError) return meanSuaredError # M A I N lm = loadMovieData() userItems, nUsers, nItems, nDays, minTimestamp = lm.main() nFactors = 10 nBins = 6 timesvd_pp = timeSVDpp(100, nFactors, nUsers, nItems, userItems, nBins, nDays, minTimestamp) #10, bins, 1 iteration: RMSE = 1.02648993887 #10 bins, 20 iterations: RMSE = 0.94744760782 # 10 bins, 30 iterations: RMSE = 0.94331981365 # 30 bins, 20 iterations: 0.94672648969
from load_movie_data import loadMovieData import mxnet import timeSVDpp_batch import v1 import v3_batch import v2_batch import trainer import math data_loader = loadMovieData() userItems, nUsers, nItems, nDays, minTimestamp = \ data_loader.main('ml-100k/u1.base') test_userItems, test_nUsers, test_nItems, test_nDays, test_minTimestapm = \ data_loader.main('ml-100k/u1.test') # 计算总平均分数 average_rating = 0 rating_cnt = 0 for user in userItems.keys(): items = userItems[user] for item in items: average_rating += item[1] rating_cnt += 1 average_rating /= rating_cnt # 计算测试集容量 test_rating_cnt = 0 for user in test_userItems.keys(): items = test_userItems[user] for item in items: