def generate_all_masks(all_It, params_R_M, params_C_M, params_D_M): all_Mn, all_Mm, all_Ml = [], [], [] for E1,E2,fraction_unknown in params_R_M: Mn = generate_M(all_It[E1],all_It[E2],fraction_unknown) all_Mn.append(Mn) for E1,fraction_unknown in params_C_M: Mm = generate_M(all_It[E1],all_It[E1],fraction_unknown) all_Mm.append(Mm) for E1,J,fraction_unknown in params_D_M: Ml = generate_M(all_It[E1],J,fraction_unknown) all_Ml.append(Ml) return all_Mn, all_Mm, all_Ml
def try_generate_M(I,J,fraction_unknown,attempts): for attempt in range(1,attempts+1): try: M = generate_M(I,J,fraction_unknown) sums_columns = M.sum(axis=0) sums_rows = M.sum(axis=1) for i,c in enumerate(sums_rows): assert c != 0, "Fully unobserved row in M, row %s. Fraction %s." % (i,fraction_unknown) for j,c in enumerate(sums_columns): assert c != 0, "Fully unobserved column in M, column %s. Fraction %s." % (j,fraction_unknown) print "Took %s attempts to generate M." % attempt return M except AssertionError: pass raise Exception("Tried to generate M %s times, with I=%s, J=%s, fraction=%s, but failed." % (attempts,I,J,fraction_unknown))
def try_generate_M(I, J, fraction_unknown, attempts): for attempt in range(1, attempts + 1): try: M = generate_M(I, J, fraction_unknown) sums_columns = M.sum(axis=0) sums_rows = M.sum(axis=1) for i, c in enumerate(sums_rows): assert c != 0, "Fully unobserved row in M, row %s. Fraction %s." % ( i, fraction_unknown) for j, c in enumerate(sums_columns): assert c != 0, "Fully unobserved column in M, column %s. Fraction %s." % ( j, fraction_unknown) print "Took %s attempts to generate M." % attempt return M except AssertionError: pass raise Exception( "Tried to generate M %s times, with I=%s, J=%s, fraction=%s, but failed." % (attempts, I, J, fraction_unknown))
R = numpy.dot(F,numpy.dot(S,G.T)) iterations = 50 init_S = 'random' init_FG = 'kmeans' I, J, K, L = 20, 20, 3, 2 fraction_unknown = 0.6 alpha, beta = 1., 1. lambdaF = numpy.ones((I,K))*1 lambdaS = numpy.ones((K,L))/50 lambdaG = numpy.ones((J,L))*1 priors = { 'alpha':alpha, 'beta':beta, 'lambdaF':lambdaF, 'lambdaS':lambdaS, 'lambdaG':lambdaG } M = generate_M(I,J,fraction_unknown) M_test = calc_inverse_M(M) # Run the Gibbs sampler BNMTF = bnmtf_vb(R,M,K,L,priors) BNMTF.initialise(init_S=init_S,init_FG=init_FG) BNMTF.run(iterations) # Also measure the performances performances = BNMTF.predict(M_test) print performances # Plot the tau expectation values to check convergence plt.plot(BNMTF.all_exp_tau) print "F: %s." % BNMTF.expF
I, J, K, L = 20, 20, 3, 2 fraction_unknown = 0.6 alpha, beta = 1., 1. lambdaF = numpy.ones((I, K)) * 1 lambdaS = numpy.ones((K, L)) / 50 lambdaG = numpy.ones((J, L)) * 1 priors = { 'alpha': alpha, 'beta': beta, 'lambdaF': lambdaF, 'lambdaS': lambdaS, 'lambdaG': lambdaG } M = generate_M(I, J, fraction_unknown) M_test = calc_inverse_M(M) # Run the Gibbs sampler BNMTF = bnmtf_vb(R, M, K, L, priors) BNMTF.initialise(init_S=init_S, init_FG=init_FG) BNMTF.run(iterations) # Also measure the performances performances = BNMTF.predict(M_test) print performances # Plot the tau expectation values to check convergence plt.plot(BNMTF.all_exp_tau) print "F: %s." % BNMTF.expF