コード例 #1
0
ファイル: mlhmm.py プロジェクト: vishalbelsare/netpred
    def train(self):
        '''
		Estimate model parameters from data.
		'''
        self.model.init_training()
        # Initialize frequency accumulators
        transmission_acc = numpy.zeros((self.num_states, self.num_states))
        emission_acc = numpy.zeros(self.num_states * self.num_features *
                                   self.num_plif_nodes)
        # Go through training data, counting state transitions and feature emissions
        assert (self.model.get_labels().get_num_labels() ==
                self.model.get_features().get_num_vectors())
        for i in xrange(self.model.get_labels().get_num_labels()):
            # Update transmission and emission counts internally in the model
            self.model.get_joint_feature_vector(i, i)
            # Update accumulators
            transmission_acc += self.model.get_transmission_weights()
            emission_acc += self.model.get_emission_weights()

        # Compute model parameters from the accumulators
        state_model = TwoStateModel()
        w = state_model.weights_to_vector(transmission_acc, emission_acc,
                                          self.num_features,
                                          self.num_plif_nodes)
        ##		print w
        ##		print '# transmission & emission weights = ',
        ##				numpy.prod(transmission_acc.shape)+emission_acc.shape[0]
        ##		print '# params = ', num_free_states*(num_free_states + num_features*num_plif_nodes)

        # Smooth counts equal to zero to avoid zero-division warnings
        w[w == 0.0] = 1e-100

        # Compute transition scores as transition frequencies, i.e. estimate
        # probabilities using the ML rule
        self.transition_scores[0] = numpy.log(w[0] / w[0:2].sum())
        self.transition_scores[1] = numpy.log(w[1] / w[0:2].sum())
        self.transition_scores[2] = numpy.log(w[2] / w[2:4].sum())
        self.transition_scores[3] = numpy.log(w[3] / w[2:4].sum())

        # Compute emission or feature scores as frequencies of occurrence
        # Offset given by the number of transition_scores, used to index w
        offset = self.transition_scores.shape[0]
        self.feature_scores = numpy.zeros(
            (self.num_features, self.num_free_states, self.num_plif_nodes))
        for s in xrange(self.num_free_states):
            state_idx = s * self.num_features * self.num_plif_nodes
            for f in xrange(self.num_features):
                feat_idx = f * self.num_plif_nodes
                idx = offset + state_idx + feat_idx
                self.feature_scores[f, s, :] = numpy.log(
                    w[idx:idx + self.num_plif_nodes] /
                    w[idx:idx + self.num_plif_nodes].sum())
コード例 #2
0
def structure_plif_hmsvm_bmrm (num_examples, example_length, num_features, num_noise_features):
	from modshogun import RealMatrixFeatures, TwoStateModel, DualLibQPBMSOSVM, StructuredAccuracy

	model = TwoStateModel.simulate_data(num_examples, example_length, num_features, num_noise_features)
	sosvm = DualLibQPBMSOSVM(model, model.get_labels(), 5000.0)

	sosvm.train()
	#print sosvm.get_w()

	predicted = sosvm.apply(model.get_features())
	evaluator = StructuredAccuracy()
	acc = evaluator.evaluate(predicted, model.get_labels())
コード例 #3
0
def structure_plif_hmsvm_mosek (num_examples, example_length, num_features, num_noise_features):
	from modshogun import RealMatrixFeatures, TwoStateModel, StructuredAccuracy

	try:
		from modshogun import PrimalMosekSOSVM
	except ImportError:
		print("Mosek not available")
		return

	model = TwoStateModel.simulate_data(num_examples, example_length, num_features, num_noise_features)
	sosvm = PrimalMosekSOSVM(model, model.get_labels())

	sosvm.train()
	#print(sosvm.get_w())

	predicted = sosvm.apply(model.get_features())
	evaluator = StructuredAccuracy()
	acc = evaluator.evaluate(predicted, model.get_labels())
コード例 #4
0
def structure_plif_hmsvm_bmrm (num_examples, example_length, num_features, num_noise_features):
	from modshogun import RealMatrixFeatures, TwoStateModel, StructuredAccuracy
	try:
		from modshogun import DualLibQPBMSOSVM
	except ImportError:
		print("DualLibQPBMSOSVM not available")
		exit(0)

	model = TwoStateModel.simulate_data(num_examples, example_length, num_features, num_noise_features)
	sosvm = DualLibQPBMSOSVM(model, model.get_labels(), 5000.0)
	sosvm.set_store_train_info(False)

	sosvm.train()
	#print sosvm.get_w()

	predicted = sosvm.apply(model.get_features())
	evaluator = StructuredAccuracy()
	acc = evaluator.evaluate(predicted, model.get_labels())
コード例 #5
0
def structure_plif_hmsvm_mosek(num_examples, example_length, num_features,
                               num_noise_features):
    from modshogun import RealMatrixFeatures, TwoStateModel, StructuredAccuracy

    try:
        from modshogun import PrimalMosekSOSVM
    except ImportError:
        print("Mosek not available")
        return

    model = TwoStateModel.simulate_data(num_examples, example_length,
                                        num_features, num_noise_features)
    sosvm = PrimalMosekSOSVM(model, model.get_labels())

    sosvm.train()
    #print(sosvm.get_w())

    predicted = sosvm.apply(model.get_features())
    evaluator = StructuredAccuracy()
    acc = evaluator.evaluate(predicted, model.get_labels())