예제 #1
0
파일: gsm_test.py 프로젝트: ominux/cmt
    def test_train(self):
        gsm0 = GSM(3, 2)
        gsm0.mean = [1, 1, 1]
        gsm0.scales = [1, 5]
        gsm0.priors = [0.7, 0.3]

        gsm0.covariance = gsm0.covariance / power(det(gsm0.covariance),
                                                  1. / gsm0.dim)

        samples = gsm0.sample(50000)

        # try to recover parameters
        gsm1 = GSM(3, 2)
        gsm1.train(samples, parameters={'max_iter': 50})

        # normalize
        f = power(det(gsm1.covariance), 1. / gsm1.dim)
        gsm1.covariance = gsm1.covariance / f
        gsm1.scales = gsm1.scales / f

        self.assertLess(max(abs(gsm1.mean - gsm0.mean)), 0.2)
        self.assertLess(
            max(abs(1. -
                    sort(gsm1.priors.ravel()) / sort(gsm0.priors.ravel()))),
            0.2)
        self.assertLess(
            max(abs(1. -
                    sort(gsm1.scales.ravel()) / sort(gsm0.scales.ravel()))),
            0.2)
        self.assertLess(max(abs(gsm1.covariance - gsm0.covariance)), 0.2)

        weights = rand(1, samples.shape[1])
        weights /= sum(weights)

        gsm1 = GSM(3, 2)
        gsm1.train(samples, weights=weights, parameters={'max_iter': 100})

        # normalize
        f = power(det(gsm1.covariance), 1. / gsm1.dim)
        gsm1.covariance = gsm1.covariance / f
        gsm1.scales = gsm1.scales / f

        self.assertLess(max(abs(gsm1.mean - gsm0.mean)), 0.2)
        self.assertLess(
            max(abs(1. -
                    sort(gsm1.priors.ravel()) / sort(gsm0.priors.ravel()))),
            0.2)
        self.assertLess(
            max(abs(1. -
                    sort(gsm1.scales.ravel()) / sort(gsm0.scales.ravel()))),
            0.2)
        self.assertLess(max(abs(gsm1.covariance - gsm0.covariance)), 0.2)
예제 #2
0
파일: gsm_test.py 프로젝트: cajal/cmt
	def test_train(self):
		gsm0 = GSM(3, 2)
		gsm0.mean = [1, 1, 1]
		gsm0.scales = [1, 5]
		gsm0.priors = [0.7, 0.3]

		gsm0.covariance = gsm0.covariance / power(det(gsm0.covariance), 1. / gsm0.dim)

		samples = gsm0.sample(50000)

		# try to recover parameters
		gsm1 = GSM(3, 2)
		gsm1.train(samples, parameters={'max_iter': 50})

		# normalize
		f = power(det(gsm1.covariance), 1. / gsm1.dim)
		gsm1.covariance = gsm1.covariance / f
		gsm1.scales = gsm1.scales / f

		self.assertLess(max(abs(gsm1.mean - gsm0.mean)), 0.2)
		self.assertLess(max(abs(1. - sort(gsm1.priors.ravel()) / sort(gsm0.priors.ravel()))), 0.2)
		self.assertLess(max(abs(1. - sort(gsm1.scales.ravel()) / sort(gsm0.scales.ravel()))), 0.2)
		self.assertLess(max(abs(gsm1.covariance - gsm0.covariance)), 0.2)

		weights = rand(1, samples.shape[1])
		weights /= sum(weights)

		gsm1 = GSM(3, 2)
		gsm1.train(samples, weights=weights, parameters={'max_iter': 100})

		# normalize
		f = power(det(gsm1.covariance), 1. / gsm1.dim)
		gsm1.covariance = gsm1.covariance / f
		gsm1.scales = gsm1.scales / f

		self.assertLess(max(abs(gsm1.mean - gsm0.mean)), 0.2)
		self.assertLess(max(abs(1. - sort(gsm1.priors.ravel()) / sort(gsm0.priors.ravel()))), 0.2)
		self.assertLess(max(abs(1. - sort(gsm1.scales.ravel()) / sort(gsm0.scales.ravel()))), 0.2)
		self.assertLess(max(abs(gsm1.covariance - gsm0.covariance)), 0.2)
예제 #3
0
파일: gsm_test.py 프로젝트: cajal/cmt
	def test_pickle(self):
		model0 = GSM(7, 9)

		model0.mean = randn(7, 1)
		model0.covariance = cov(randn(7, 20))

		tmp_file = mkstemp()[1]

		# store model
		with open(tmp_file, 'w') as handle:
			dump({'model': model0}, handle)

		# load model
		with open(tmp_file) as handle:
			model1 = load(handle)['model']

		# make sure parameters haven't changed
		self.assertEqual(model0.dim, model1.dim)
		self.assertEqual(model0.num_scales, model1.num_scales)

		self.assertLess(max(abs(model0.scales - model0.scales)), 1e-10)
		self.assertLess(max(abs(model0.priors - model1.priors)), 1e-10)
		self.assertLess(max(abs(model0.mean - model1.mean)), 1e-10)
		self.assertLess(max(abs(model0.covariance - model1.covariance)), 1e-10)
예제 #4
0
파일: gsm_test.py 프로젝트: ominux/cmt
    def test_pickle(self):
        model0 = GSM(7, 9)

        model0.mean = randn(7, 1)
        model0.covariance = cov(randn(7, 20))

        tmp_file = mkstemp()[1]

        # store model
        with open(tmp_file, 'w') as handle:
            dump({'model': model0}, handle)

        # load model
        with open(tmp_file) as handle:
            model1 = load(handle)['model']

        # make sure parameters haven't changed
        self.assertEqual(model0.dim, model1.dim)
        self.assertEqual(model0.num_scales, model1.num_scales)

        self.assertLess(max(abs(model0.scales - model0.scales)), 1e-10)
        self.assertLess(max(abs(model0.priors - model1.priors)), 1e-10)
        self.assertLess(max(abs(model0.mean - model1.mean)), 1e-10)
        self.assertLess(max(abs(model0.covariance - model1.covariance)), 1e-10)