def main(): # learn_data = Parser.MatrixParser.txttocsc(r"../ml-100k/u1.base") # test_data = Parser.MatrixParser.txttocsc(r"../ml-100k/u1.test") pairs_lt = Tools.folder2pairs(r"../ml-100k/") m_score = 0.0 for pair in pairs_lt: # bias = Bias(Parser.MatrixParser.txttocsc(pair[0]), "item_{}.png".format(pair[2]), case='item') # score = bias.predict(Parser.MatrixParser.txttocsc(pair[1])) # export_name = "{}.sim".format(pair[0].split("/")[-1]) # # if os.path.isfile(export_name): # bfile = open(export_name, 'rb') # sim = pickle.load(bfile) # bfile.close() # else: # sim = SimiTriple(pair[0]) # filehandler = open(export_name, "wb") # pickle.dump(sim, filehandler) # filehandler.close() # svd = SVD(pair[0], k=10) # score = svd.predict(Parser.MatrixParser.txttocsc(pair[1])) # fgd = FGD(pair[0], epochs=12, nZ=10, l1_weight=0.1, l2_weight=0.1, learning_rate=0.01) # score = fgd.predict(Parser.MatrixParser.txttocsc(pair[1])) svdgd = SVDGD(pair[0], nZ=2, learning_rate=0.1, lambda_4=10, epochs=10) score = svdgd.predict(Parser.MatrixParser.txttocsc(pair[1])) print pair[2], score m_score += score break print "Mean", m_score/len(pairs_lt)
def evalSVD(config): pairs_lt = Tools.folder2pairs(r"../ml-100k/") m_score = 0.0 for pair in pairs_lt: svd = SVD(pair[0], k=config[0]) try: score = svd.predict(Parser.MatrixParser.txttocsc(pair[1])) m_score += score except FloatingPointError: score = -100 m_score += score print "FP ERROR", pair[2], config break except: score = -500 m_score += score print "PREDICT ERROR", pair[2], config break # m_score += score m_score /= len(pairs_lt) print "{:2d}, {:2.4f}".format(config[0], m_score) return m_score