예제 #1
0
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("执行完毕!")