예제 #1
0
def train_loglin(trainX, trainY, reg_const):
    D, V = trainX.shape
    K = 2  #two classes
    #print 'K={0}, D={1}, V={2}'.format(K, D, V)
    assert trainX.shape[0] == len(trainY)
    beta = loglinmm.get_beta(trainX)
    gamma0 = np.random.rand(K, V)

    #PYLBFGS stuff
    bb = LBFGS()
    bb.orthantwise_c = 2.0**reg_const
    bb.linesearch = 'wolfe'
    bb.epsilon = 1e-01
    bb.delta = 1e-01

    #find optimum
    gamma_opt = bb.minimize(loglinmm.negll, gamma0, None,
                            [beta, trainX, trainY])
    w_given_class = loglinmm.prob_w_given_k(beta, gamma_opt)
    return w_given_class