-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmulti_metric_4.py
More file actions
148 lines (131 loc) · 7.73 KB
/
Copy pathmulti_metric_4.py
File metadata and controls
148 lines (131 loc) · 7.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
import math
import os
import numpy
import numpy as np
from collections import defaultdict
import csv
ROOT_FOLDER = "../checkpoint/SIGIR2023"
# DATASET_LIST = ["amazon_cds", "amazon_tv", "amazon_electronic", "amazon_beauty", "amazon_clothing", "amazon_books", "amazon_sports", "movielens", "movielens_100k", ]
DATASET_LIST = ["amazon_cds", "amazon_electronic"]
MODEL_LIST = ["din", "sasrec", "gru4rec"]
# TYPE_LIST = ["base", "base_finetune", "meta", "meta_gru", "meta_random", "meta_ood_ocsvm", "meta_ood_lof", "meta_ood_if", "meta_ood", "meta_ood2", "meta_ood_gru", "meta_ood_gru2"]
TYPE_LIST = ["base", "base_finetune", "meta", "meta_random", "meta_ood_ocsvm", "meta_ood_lof", "meta_ood", "meta_ood_uncertainty"]
# TYPE_LIST1 = ["base", "base_finetune", "meta", "meta_random", "meta_ood_ocsvm", "meta_ood_lof", "meta_ood", "meta_ood_uncertainty"]
# TYPE_LIST2 = ["meta_random", "meta_ood_ocsvm", "meta_ood_lof", "meta_ood", "meta_ood_uncertainty"]
# TYPE_LIST = ["base", "base_finetune", "meta", "meta_random", "meta_ood"]
# log_filename = "log.txt"
# log_filename = "log_ood.txt"
log_filename = "test.txt"
# epoch = 20
# epoch = 10
result_file = os.path.join(ROOT_FOLDER, "result_ood.txt")
result_file2 = os.path.join(ROOT_FOLDER, "result2_ood.txt")
# csv_writer1 = csv.writer(open(os.path.join(ROOT_FOLDER, "result_ood.csv"), 'w+', encoding='utf-8', newline=''))
result_csv1 = os.path.join(ROOT_FOLDER, "result_ood1.csv")
result_csv2 = os.path.join(ROOT_FOLDER, "result_ood2.csv")
# csv_writer2 = csv.writer(open(os.path.join(ROOT_FOLDER, "result_ood2.csv"), 'w+', encoding='utf-8', newline=''))
# with open(result_file, "w+") as writer, open(result_file2, "w+") as writer2:
with open(result_file, "w+") as writer, open(result_csv1, "w+") as csv_writer:
for dataset in DATASET_LIST:
print("=" * 50, file=writer)
print(dataset, file=writer)
print("-" * 50, file=writer)
for model in MODEL_LIST:
for type in TYPE_LIST:
log_file = os.path.join(ROOT_FOLDER, "{}_{}".format(dataset, model), type, log_filename)
if type == "base_finetune":
log_file = os.path.join(ROOT_FOLDER, "{}_{}".format(dataset, model), type, "log_overall.txt")
if not os.path.exists(log_file):
continue
auc_max_list = []
auc_user_max_list = []
logloss_max_list = []
ndcg5_max_list = []
ndcg10_max_list = []
ndcg20_max_list = []
hr5_max_list = []
hr10_max_list = []
hr20_max_list = []
# auc_dict = defaultdict(list)
# auc_user_dict = defaultdict(list)
# logloss_dict = defaultdict(list)
# ndcg5_dict = defaultdict(list)
# ndcg10_dict = defaultdict(list)
# ndcg20_dict = defaultdict(list)
# hr5_dict = defaultdict(list)
# hr10_dict = defaultdict(list)
# hr20_dict = defaultdict(list)
# rate_dict = defaultdict(list)
auc_dict = {}
auc_user_dict = {}
logloss_dict = {}
ndcg5_dict = {}
ndcg10_dict = {}
ndcg20_dict = {}
hr5_dict = {}
hr10_dict = {}
hr20_dict = {}
rate_dict = {}
# request_num_max_list = []
# total_num_max_list = []
rate_list = []
with open(log_file, "r+") as reader:
for index, line in enumerate(reader, 1):
# print(line.strip("\n"))
auc = float(line.strip("\n").split(",")[2].split("=")[-1])
auc_user = float(line.strip("\n").split(",")[3].split("=")[-1])
logloss = float(line.strip("\n").split(",")[4].split("=")[-1])
ndcg5 = float(line.strip("\n").split(",")[5].split("=")[-1])
hr5 = float(line.strip("\n").split(",")[6].split("=")[-1])
ndcg10 = float(line.strip("\n").split(",")[7].split("=")[-1])
hr10 = float(line.strip("\n").split(",")[8].split("=")[-1])
ndcg20 = float(line.strip("\n").split(",")[9].split("=")[-1])
hr20 = float(line.strip("\n").split(",")[10].split("=")[-1])
# if type == "base_finetune":
# auc_max_list.append(auc)
# auc_user_max_list.append(auc_user)
# logloss_max_list.append(logloss)
# ndcg5_max_list.append(ndcg5)
# ndcg10_max_list.append(ndcg10)
# ndcg20_max_list.append(ndcg20)
# hr5_max_list.append(hr5)
# hr10_max_list.append(hr10)
# hr20_max_list.append(hr20)
# continue
if type in ["base", "base_finetune"]:
rate = 0.0
elif type in ["meta"]:
rate = 1.0
else:
# rate = float(line.strip("\n").split(",")[-4].split("=")[-1]) / float(line.strip("\n").split(",")[-3].split("=")[-1])
rate = float(line.strip("\n").split(",")[-1].split("=")[-1])
# rate_list.append(rate)
auc_dict[rate] = auc
auc_user_dict[rate] = auc_user
logloss_dict[rate] = logloss
ndcg5_dict[rate] = ndcg5
ndcg10_dict[rate] = ndcg10
ndcg20_dict[rate] = ndcg20
hr5_dict[rate] = hr5
hr10_dict[rate] = hr10
hr20_dict[rate] = hr20
for key, value in result_dict.items():
model, type = key.split(" ")
for _writer in [writer, csv_writer]:
for metric_dict in [auc_dict, auc_user_dict, logloss_dict, ndcg5_dict, ndcg10_dict,
ndcg20_dict, hr5_dict, hr10_dict, hr20_dict]:
for rate, metric in metric_dict.items():
print()
# print("{},{},{},{},{},{},{},{},{}".format("{:10s}".format(model), "{:24s}".format(type),
# "{:6s}".format(",".join(result_dict["{} {}".format(model, type)])),
# "{:6s}".format(",".join(result_dict_["{} {}".format(model, type)])),
# "{:6s}".format(",".join(result_dict3["{} {}".format(model, type)])),
# "{:6s}".format(",".join(result_dict4["{} {}".format(model, type)])),
# "{:6s}".format(",".join(result_dict5["{} {}".format(model, type)])),
# "{:6s}".format(",".join(result_dict6["{} {}".format(model, type)])),
# "{:6s}".format(",".join(result_dict11["{} {}".format(model, type)]))),
# sep="\t", file=_writer)
print("\n", file=writer)
print("\n", file=csv_writer)
# print("\n", file=writer2)
# print("\n\n", file=writer)