예제 #1
0

    # Do the transition model stuff first
    X = np.loadtxt(open("dump/observations_simulated_trans_"+str(students)+".csv","rb"),delimiter=",")
    #load problem IDs for these observations
    P = np.loadtxt(open("dump/problems_simulated_trans_"+str(students)+".csv","rb"),delimiter=",")
    #S = np.loadtxt(open("dump/skills_simulated_trans.csv", "rb"), delimiter=",")
    states = np.loadtxt(open("dump/states_simulated_trans_"+str(students)+".csv","rb"),delimiter=",")
    times = get_mastery_time(states)


    #get params learned from model
    pdictl = json.load(open("dump/PARAMS_simulated_trans_"+str(students)+"_L1_second_trans_2states_1000iter.json","r"))

    # L1 transition model, transition AFTER emission
    model = MLFKTTransitionModel(X, P, 0, 0.15, True, False)

    params = model.get_parameters()
    #Set the learned model parameters for transition model
    for k, v in params.iteritems():
        if k in pdictl[-1]:
            v.set(pdictl[-1][k])
        else:
            print
            print pdictl[-1]
            print "Uh oh,", k, "not in learned params for transition model"

    """params['D_8'].set(0.8834557934379552)
    params['D_9'].set(1.140053275980339)
    params['D_2'].set(-2.500678825112307)
    params['D_3'].set(-1.7398224556239437)
    P = np.array(P)

    print str(Xtest.shape[0]) + " test sequences"
    print str(X.shape[0]) + " training sequences"

    if "1" in sys.argv[8]:
        L1 = True
    else:
        L1 = False

    trans_first = False
    if len(sys.argv) > 9:
        trans_first = True

    if "y" in sys.argv[4]:
        model = MLFKTTransitionModel(X, P, intermediate_states, 0, L1, trans_first)
    else:
        model = MLFKTTransitionModel(X, P, intermediate_states, 0.1, L1, trans_first)

    mcmc = MCMCSampler(model, 0.15)

    burn = int(sys.argv[1])
    for c in range(20):
        mcmc.burnin(int(math.ceil((burn + 0.0) / 20)))
        print ("finished burn-in #: " + str((c + 1) * burn / 20))

    num_iterations = int(sys.argv[2])
    loop = 20
    per_loop = int(math.ceil((num_iterations + 0.0) / loop))
    for c in range(loop):
        a = time.time()