def test_SGD4(self, err): def grad(X, y, theta, schleem, plumbus, wubba, lubba): m = len(y) grad = (schleem / (m * wubba)) grad = grad * (X.T).dot(X.dot(theta) - y) grad = grad + plumbus / (2 * lubba) return grad X = array([[0, 1, 2], [-1, 5, 3], [2, 0, 1]]) initial_theta = array([[0.3], [2.7], [1.6]]) y = array([[0.3], [1.2], [0.5]]) num_iters = 8 plumbus = 1.2 schleem = 0.9 wubba = 2.4 lubba = 3 alpha = 0.005 assert_allclose(array([[0.42789], [1.63920], [0.84140]]), SGD(X, y, grad, initial_theta, alpha, num_iters, lubba=lubba, schleem=schleem, wubba=wubba, plumbus=plumbus), rtol=0, atol=0.001, equal_nan=False)
def test_SGD3(self, err): def grad(X, y, theta): m = len(y) grad = (1 / m) * (X.T).dot(X.dot(theta) - y) return grad X = array([[0, 1, 2], [-1, 5, 3], [2, 0, 1]]) initial_theta = array([[0.3], [2.7], [1.6]]) y = array([[0.3], [1.2], [0.5]]) num_iters = 5 alpha = 0.001 assert_allclose(array([[0.36143], [2.28673], [1.30772]]), SGD(X, y, grad, initial_theta, alpha, num_iters), rtol=0, atol=0.001, equal_nan=False)
def test_SGD2(self, err): def grad(X, y, theta): m = len(y) grad = (1 / m) * (X.T).dot(X.dot(theta) - y) return grad X = array([[0, 1, 2], [-1, 5, 3], [2, 0, 1]]) initial_theta = array([[0], [0], [0]]) y = array([[0.3], [1.2], [0.5]]) num_iters = 10 alpha = 0.01 assert_allclose(array([[0.042237], [0.162748], [0.133705]]), SGD(X, y, grad, initial_theta, alpha, num_iters), rtol=0, atol=0.001, equal_nan=False)