Я пишу код для оценки точности в предсказании канала. Это пример кода
def Precision_cn(sim_dict, test_edge_list,negative):
missing_edge_set = set(test_edge_list)
sim_list = [((u, v), s) for (u, v), s in sim_dict.items()]
sim_list_sorted=sorted(sim_list, key=lambda x: (x[1], x[0]), reverse=True)[0:k]
#pre_list = []
count = 0
ll = len(sim_list_sorted)
for l in range(ll):
(u, v) = sim_list_sorted[l][0]
if (u, v) in missing_edge_set:
count += 1
pre_list= count / ll
return pre_list
здесь списки Test_edge являются положительными примерами промежуточных значений пары узлов (i, j), а отрицательные - несвязанными парами. (I, J). Но удивительно, что я получаю очень маленькое значение точности. Есть ли проблемы с этим кодом? любая помощь будет оценена (пара узлов (u, v), s) и пара значений k-top значения оценки, в этом примере я использовал 100 узловых пар sim_dict со значениями сходства (оценки)