示例#1
0
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
示例#2
0
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))
示例#3
0
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
示例#5
0
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