def evaluate(train_set, test_set): print('Evaluating start ...') kg_sim = {} kg_sim_detail = {} for line in lf.load_file_all("./data/kg_sim1.txt"): temp = line.split("::") details = temp[1].replace("{", "").replace("}", "").split(",") kg_sim.setdefault(int(temp[0]), {}) for items in details: kv = items.split(":") kg_sim_detail[int(kv[0])] = kv[1] kg_sim[temp[0]] = kg_sim_detail user_sim_matrix = gg.calc_user_sim(train_set) movie_sim_matrix = ic.calc_movie_sim(train_set) all_rec_movies = set() for i in sim_mix: sim_score = i[0] sim_kg = i[1] for j in range(loop_count): # group generate group_mem = gg.generateGroup(user_sim_matrix, train_set, group_count, group_sim) group_rank_kg = ic.kg_ic_predict(movie_sim_matrix, train_set, group_mem, kg_sim, sim_score, sim_kg) g_rating_kg_lm = gsp.least_strategy(group_rank_kg, N) precision_kg_lm, recall_kg_lm, sim_score, sim_kg = ev_detail_kg( group_mem, test_set, g_rating_kg_lm, all_rec_movies, sim_score, sim_kg) g_rating_kg_avg = gsp.avg_strategy(group_rank_kg, N) precision_kg_avg, recall_kg_avg, sim_score, sim_kg = ev_detail_kg( group_mem, test_set, g_rating_kg_avg, all_rec_movies, sim_score, sim_kg) print("执行完毕!")