def doBatchExperiments(N, omissions, flips, NTrials = 10):
I, J = np.meshgrid(np.arange(N), np.arange(N))
I = I[np.triu_indices(N, 1)]
J = J[np.triu_indices(N, 1)]
Rankings = np.zeros((len(omissions), len(flips), NTrials, N))
INorms = np.zeros((len(omissions), len(flips), NTrials))
HNorms = np.zeros((len(omissions), len(flips), NTrials))
for t in range(NTrials):
for i in range(0, len(omissions)):
om = omissions[i]
NEdges = int(len(I)*(1-om))
for j in range(len(flips)):
print("Doing trial %i of %i, omission %i of %i, flip %i of %i"%(t, NTrials, i, len(omissions), j, len(flips)))
R = np.zeros((NEdges, 2))
idx = np.random.permutation(len(I))[0:NEdges]
R[:, 0] = I[idx]
R[:, 1] = J[idx]
f = flips[j]
Y = np.ones(NEdges)
W = 0.5 + 0.5*np.random.rand(NEdges)
#W = np.ones(NEdges)
NFlips = int(f*len(Y))
Y[np.random.permutation(NEdges)[0:NFlips]] = -1
(s, IM, H) = doHodge(R, W, Y, verbose = True)
Rankings[i, j, t, :] = s
[INorms[i, j, t], HNorms[i, j, t]] = [getWNorm(IM, W), getWNorm(H, W)]
KTScores = scoreBatchRankings(Rankings)
sio.savemat("BatchResults.mat", {"Rankings":Rankings, "INorms":INorms, "HNorms":HNorms, "omissions":omissions, "flips":flips, "KTScores":KTScores})
评论列表
文章目录