-
Notifications
You must be signed in to change notification settings - Fork 0
/
PaSC_CosineSimilarity_Score.py
78 lines (68 loc) · 1.62 KB
/
PaSC_CosineSimilarity_Score.py
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
import numpy as np
import os
import sys
from scipy import spatial
fold = sys.argv[1]
f3 = open(fold+'/CMC_control.txt','a')
f1 = open(fold+'/pasc_control_feat_PreVGG.txt','r')
f2 = open(fold+'/CosSim_sym.txt','w')
name_list = []
feat_list = []
name = sys.argv[2]
cnt = 0
for line in f1:
cnt += 1
fl = line.split(',')
name_list.append(fl[0])
temp_list = []
for i in range(1,len(fl)):
temp_list.append(float(fl[i]))
feat_list.append(temp_list)
def score_C(temp_s,cls,score_F,ht):
flag = 0
for k in range(0,ht):
cls1 = temp_s[k].split('d')[0]
if cls == cls1 and flag == 0:
score_F[ht-1] += 1
flag = 1
return score_F
score1 = 0
score5 = 0
score10 = 0
score_F = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
vid = float(cnt)
cnt = 0
for i in range(0,len(name_list)):
cls = name_list[i].split('d')[0]
cos_score = []
f2.write(name_list[i])
#f2.write(',')
for j in range(0,len(name_list)):
sim = 1 - spatial.distance.cosine(feat_list[i], feat_list[j])
cos_score.append(sim)
f2.write(',')
f2.write(str(sim))
f2.write('\n')
s = sorted(range(len(cos_score)), key=lambda k: cos_score[k])
s.reverse()
flag = 0
temp_s = []
#score_F = score_C(temp_s,cls,score_F,ht)
for k in range(1,16):
#print 'k ', k
#print name_list[i], name_list[s[k]]
temp_s.append(name_list[s[k]])
for k in range(1,16):
score_F = score_C(temp_s,cls,score_F,k)
cnt += 1
print cnt
f3.write(name)
for i in range(0,len(score_F)):
score_F[i] = float("{0:.4f}".format(score_F[i]/vid))
f3.write(',')
f3.write(str(score_F[i]*100))
f3.write('\n')
print 'Final score ', score_F
print score_F[0], score_F[4], score_F[9], score_F[14]
f1.close()
f2.close()