예제 #1
0
    def test_numeric_grad_2(self, err):
        def J(x):
            return sum(1 / x)

        theta = array([[5], [8], [20]])

        assert_allclose(array([[-0.04], [-0.015625], [-0.0025]]),
                        numerical_grad(J, theta, err),
                        rtol=0, atol=0.001, equal_nan=False)
예제 #2
0
    def test_numeric_grad_1(self, err):
        def J(x):
            return sum(3 * (x ** 2))

        theta = array([[0], [4], [10]])

        assert_allclose(array([[0], [24], [60]]),
                        numerical_grad(J, theta, err),
                        rtol=0, atol=0.001, equal_nan=False)
예제 #3
0
    def test_numeric_grad_5(self, err):
        def J(x):
            return sum(7 * x)

        theta = array([[-10], [-1], [0], [1], [10]])

        assert_allclose(array([[7], [7], [7], [7], [7]]),
                        numerical_grad(J, theta, err),
                        rtol=0,
                        atol=0.001,
                        equal_nan=False)
예제 #4
0
    def test_numeric_grad_4(self, err):
        def J(x):
            return sum(exp(x))

        theta = array([[-10], [-1], [0], [1], [10]])

        assert_allclose(array([[exp(-10)], [exp(-1)], [exp(0)], [exp(1)],
                               [exp(10)]]),
                        numerical_grad(J, theta, err),
                        rtol=0,
                        atol=0.001,
                        equal_nan=False)
예제 #5
0
    def test_numeric_grad_3(self, err):
        def J(x):
            return sum(cos(x))

        theta = array([[radians(30)], [radians(45)], [radians(60)],
                       [radians(90)]])

        assert_allclose(array([[-sin(radians(30))], [-sin(radians(45))],
                               [-sin(radians(60))], [-sin(radians(90))]]),
                        numerical_grad(J, theta, err),
                        rtol=0,
                        atol=0.001,
                        equal_nan=False)
예제 #6
0
    def test_grad_data1_6(self, data1, err):
        y = data1[:, -1:]
        X = data1[:, :-1]
        m, n = X.shape
        intercept = ones((m, 1), dtype=float64)
        X = append(intercept, X, axis=1)
        theta = array([[3.46], [-2.76]])

        def J(theta):
            return cost_func(X, y, theta)

        assert_allclose(grad(X, y, theta),
                        numerical_grad(J, theta, err),
                        rtol=0,
                        atol=0.001)
예제 #7
0
    def test_reg_grad_data1_6(self, data1, err):
        y = data1[:, -1:]
        X = data1[:, :-1]
        m, n = X.shape
        intercept = ones((m, 1), dtype=float64)
        X = append(intercept, X, axis=1)
        theta = array([[-12.4], [23.56]])
        _lambda = 943

        def J(theta):
            return reg_cost_func(X, y, theta, _lambda)

        assert_allclose(reg_grad(X, y, theta, _lambda),
                        numerical_grad(J, theta, err),
                        rtol=0,
                        atol=0.001)
예제 #8
0
    def test_reg_grad_data1_4(self, data1, err):
        y = data1[:, -1:]
        X = data1[:, :-1]
        m, n = X.shape
        intercept = ones((m, 1), dtype=float64)
        X = append(intercept, X, axis=1)
        theta = -8.4 * ones((n + 1, 1), dtype=float64)
        _lambda = 0.762

        def J(theta):
            return reg_cost_func(X, y, theta, _lambda)

        assert_allclose(reg_grad(X, y, theta, _lambda),
                        numerical_grad(J, theta, err),
                        rtol=0,
                        atol=0.001)
예제 #9
0
    def test_grad_data4_6(self, data4, err):
        Y = data4[:, -1:]
        X = data4[:, :-1]
        m, n = X.shape
        intercept = ones((m, 1), dtype=float64)
        X = append(intercept, X, axis=1)
        theta = -0.145 * ones((n + 1, 1), dtype=float64)

        def J(theta):
            return cost_func(X, Y, theta)

        assert_allclose(grad(X, Y, theta),
                        numerical_grad(J, theta, err),
                        rtol=0,
                        atol=0.001,
                        equal_nan=False)
예제 #10
0
    def test_grad_data3_6(self, data3, err):
        Y = data3[:, -1:]
        X = data3[:, :-1]
        m, n = X.shape
        intercept = ones((m, 1), dtype=float64)
        X = append(intercept, X, axis=1)
        theta = array([[-20], [0.164], [-0.23]])

        def J(theta):
            return cost_func(X, Y, theta)

        assert_allclose(grad(X, Y, theta),
                        numerical_grad(J, theta, err),
                        rtol=0,
                        atol=0.001,
                        equal_nan=False)
예제 #11
0
    def test_grad_data4_5(self, data4, err):
        Y = data4[:, -1:]
        X = data4[:, :-1]
        m, _ = X.shape
        intercept = ones((m, 1), dtype=float64)
        X = append(intercept, X, axis=1)
        theta = array([[-0.198], [0.25], [-0.234], [-0.793], [0.123], [-0.378],
                       [0.423], [-0.678], [-0.3]])

        def J(theta):
            return cost_func(X, Y, theta)

        assert_allclose(grad(X, Y, theta),
                        numerical_grad(J, theta, err),
                        rtol=0,
                        atol=0.001,
                        equal_nan=False)
예제 #12
0
    def test_reg_grad_data4_6(self, data4, err):
        y = data4[:, -1:]
        X = data4[:, :-1]
        m, n = X.shape
        intercept = ones((m, 1), dtype=float64)
        X = append(intercept, X, axis=1)
        theta = -0.238 * ones((n + 1, 1), dtype=float64)
        _lambda = 975032

        def J(theta):
            return reg_cost_func(X, y, theta, _lambda)

        assert_allclose(reg_grad(X, y, theta, _lambda),
                        numerical_grad(J, theta, err),
                        rtol=0,
                        atol=0.001,
                        equal_nan=False)