示例#1
0
	def test_three_dim_polynomial(self):
		class ThreeDimPolynomial(Function):
			"""
			2x^2 - y - 2y^2 + x = z
			Minimum at (4x+1==0, 4y-1==0)
			"""

			def value_and_gradient(self, point):
				x, y = point['x'], point['y']
				value = 2*x**2 - y - 2*y**2 + x
				gradient = Counter({'x' : 4*x+1, 'y' :  4*y-1})
				return (value, gradient)

			def value(self, point):
				x, y = point['x'], point['y']
				return 2*x**2 - y + 3*y**3 - 2*y**2 + x

		threedimfunc = ThreeDimPolynomial()

		start = Counter()
		start['x'] = 0
		start['y'] = 0

		min_point = Minimizer.minimize(threedimfunc, start, quiet=True)

		self.assertAlmostEqual(min_point['x'], -0.25, 3)
		self.assertAlmostEqual(min_point['y'], 0.25, 3)
示例#2
0
    def test_three_dim_polynomial(self):
        class ThreeDimPolynomial(Function):
            """
			2x^2 - y - 2y^2 + x = z
			Minimum at (4x+1==0, 4y-1==0)
			"""
            def value_and_gradient(self, point):
                x, y = point['x'], point['y']
                value = 2 * x**2 - y - 2 * y**2 + x
                gradient = Counter({'x': 4 * x + 1, 'y': 4 * y - 1})
                return (value, gradient)

            def value(self, point):
                x, y = point['x'], point['y']
                return 2 * x**2 - y + 3 * y**3 - 2 * y**2 + x

        threedimfunc = ThreeDimPolynomial()

        start = Counter()
        start['x'] = 0
        start['y'] = 0

        min_point = Minimizer.minimize(threedimfunc, start, quiet=True)

        self.assertAlmostEqual(min_point['x'], -0.25, 3)
        self.assertAlmostEqual(min_point['y'], 0.25, 3)
示例#3
0
    def train_with_features(self, labeled_features, sigma=None, quiet=False):
        print "Optimizing weights..."
        weight_function = MaxEntWeightFunction(labeled_features, self.labels, self.features)
        weight_function.sigma = sigma

        print "Building initial dictionary..."
        initial_weights = CounterMap()

        print "Training on %d labelled features" % (len(labeled_features))

        print "Minimizing..."
        self.weights = Minimizer.minimize(weight_function, initial_weights, quiet=quiet)
示例#4
0
    def train_with_features(self, labeled_features, sigma=None, quiet=False):
        print "Optimizing weights..."
        weight_function = MaxEntWeightFunction(labeled_features, self.labels,
                                               self.features)
        weight_function.sigma = sigma

        print "Building initial dictionary..."
        initial_weights = CounterMap()

        print "Training on %d labelled features" % (len(labeled_features))

        print "Minimizing..."
        self.weights = Minimizer.minimize(weight_function,
                                          initial_weights,
                                          quiet=quiet)
示例#5
0
	def test_two_dim_polynomial(self):
		class TwoDimPolynomial(Function):
			"""
			2x^2 - 10x + 27
			Minimum at 4x-10 = 0: x = 2.5
			"""
			def value_and_gradient(self, point):
				value = 2 * (point['y']-5)**2 + 2 # 2(x-5)^2+2 => 2x^2 - 10x + 27
				gradient = Counter()
				gradient['y'] = 4 * point['y'] - 10
				return (value, gradient)

			def value(self, point):
				return 2 * (point['y']-5)**2 + 2

		Minimizer.max_iterations = 1000

		twodimfunc = TwoDimPolynomial()
		start = Counter()
		start['y'] = 0.0
		min_point = Minimizer.minimize(twodimfunc, start, quiet=True)

		self.assertAlmostEqual(min_point['y'], 2.5, 3)
示例#6
0
    def test_two_dim_polynomial(self):
        class TwoDimPolynomial(Function):
            """
			2x^2 - 10x + 27
			Minimum at 4x-10 = 0: x = 2.5
			"""
            def value_and_gradient(self, point):
                value = 2 * (point['y'] -
                             5)**2 + 2  # 2(x-5)^2+2 => 2x^2 - 10x + 27
                gradient = Counter()
                gradient['y'] = 4 * point['y'] - 10
                return (value, gradient)

            def value(self, point):
                return 2 * (point['y'] - 5)**2 + 2

        Minimizer.max_iterations = 1000

        twodimfunc = TwoDimPolynomial()
        start = Counter()
        start['y'] = 0.0
        min_point = Minimizer.minimize(twodimfunc, start, quiet=True)

        self.assertAlmostEqual(min_point['y'], 2.5, 3)