原公式
def CI(P, Y):
pair = 0
summ = 0
for i in range(1, len(Y)):
for j in range(0, i):
if i != j:
if(Y[i] > Y[j]):
pair +=1
summ += 1* (P[i] > P[j]) + 0.5 * (P[i] == P[j])
return summ/pair
新公式
def CI(P, Y):
print(P.shape)
pair = 0
summ = 0
temp1 = [(y > Y) for y in Y]
temp2 = [(p > P) + (p == P) * 0.5 for p in P]
summ = 0
for i, t in enumerate(temp2):
summ += np.sum(t[:i][temp1[i][:i]])
pair += np.sum(temp1[i][:i])
return summ/pair
效果:1h -> 0.5min 鸟枪变大炮!!!!