def train(trainingData): # train one GMM for each state mixes = list() for state in xrange(1,6): # select data with current state label d = trainingData[trainingData.rating==state] # prepare data shape d = np.array(zip(*[d[f].values for f in pcas])) # init GMM gmm = GMM(num_mixc,cov_type) # train gmm.fit(d) mixes.append(gmm) # train HMM with init, trans, GMMs=mixes init,trans = hmm.hmmMlParams(trainingData,[1,2,3,4,5]) model = GMMHMM(n_components=5,init_params='',gmms=mixes) model.transmat_ = trans model.startprob_ = init return model