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