def test_intercept_lstsq_regression(self): a = DenseMatrix(np.matrix([[1, 1],[2, 3],[4, 6]])) b = DenseMatrix(np.matrix([[12, 15, 18],[21, 27, 33],[35, 46, 57]])) res = DenseMatrix(np.matrix([[1, 2, 3],[4, 5, 6],[7, 8, 9]])) res1 = Linalg.lstsq_regression(a, b) res2 = Linalg.lstsq_regression(a, b, intercept=True) np.testing.assert_array_almost_equal(res2.mat[:-1,:], res[0:2,:].mat, 6) np.testing.assert_array_almost_equal(res2.mat[-1,:], res[2:3,:].mat, 6) new_a = a.hstack(DenseMatrix(np.ones((a.shape[0], 1)))) self.assertGreater(((a * res1) - b).norm(), ((new_a * res2) - b).norm())
def test_sparse_lstsq_regression(self): test_cases = self.pinv_test_cases for m, m_inv in test_cases: m1 = SparseMatrix(m) id_ = SparseMatrix.identity(m1.shape[0]) res = Linalg.lstsq_regression(m1, id_) np.testing.assert_array_almost_equal(res.mat.todense(), m_inv, 7) approx1 = (m1 * res).mat.todense() res2 = Linalg.lstsq_regression(m1, id_, intercept=True) new_a = m1.hstack(SparseMatrix(np.ones((m1.shape[0], 1)))) approx2 = (new_a * res2).mat.todense()
def test_sparse_lstsq_regression(self): test_cases = self.pinv_test_cases for m, m_inv in test_cases: m1 = SparseMatrix(m) id_ = SparseMatrix.identity(m1.shape[0]) res = Linalg.lstsq_regression(m1, id_) np.testing.assert_array_almost_equal(res.mat.todense(), m_inv, 7) approx1 = (m1 * res).mat.todense() res2 = Linalg.lstsq_regression(m1, id_, intercept=True) new_a = m1.hstack(SparseMatrix(np.ones((m1.shape[0], 1)))) approx2 = (new_a * res2).mat.todense()
def test_intercept_lstsq_regression(self): a = DenseMatrix(np.matrix([[1, 1], [2, 3], [4, 6]])) b = DenseMatrix(np.matrix([[12, 15, 18], [21, 27, 33], [35, 46, 57]])) res = DenseMatrix(np.matrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]])) res1 = Linalg.lstsq_regression(a, b) res2 = Linalg.lstsq_regression(a, b, intercept=True) np.testing.assert_array_almost_equal(res2.mat[:-1, :], res[0:2, :].mat, 6) np.testing.assert_array_almost_equal(res2.mat[-1, :], res[2:3, :].mat, 6) new_a = a.hstack(DenseMatrix(np.ones((a.shape[0], 1)))) self.assertGreater(((a * res1) - b).norm(), ((new_a * res2) - b).norm())
def test_dense_lstsq_regression(self): test_cases = self.pinv_test_cases for m, m_inv in test_cases: m1 = DenseMatrix(m) id_ = DenseMatrix.identity(m1.shape[0]) res = Linalg.lstsq_regression(m1, id_) np.testing.assert_array_almost_equal(res.mat, m_inv, 7)
def test_dense_lstsq_regression(self): test_cases = self.pinv_test_cases for m, m_inv in test_cases: m1 = DenseMatrix(m) id_ = DenseMatrix.identity(m1.shape[0]) res = Linalg.lstsq_regression(m1, id_) np.testing.assert_array_almost_equal(res.mat, m_inv, 7)
def test_sparse_ridge_regression(self): test_cases = self.pinv_test_cases for m, m_inv in test_cases: m1 = SparseMatrix(m) id_ = SparseMatrix.identity(m1.shape[0]) res1 = Linalg.lstsq_regression(m1, id_) np.testing.assert_array_almost_equal(res1.mat.todense(), m_inv, 7) res2 = Linalg.ridge_regression(m1, id_, 1)[0] error1 = (m1 * res1 - SparseMatrix(m_inv)).norm() error2 = (m1 * res2 - SparseMatrix(m_inv)).norm() #print "err", error1, error2 norm1 = error1 + res1.norm() norm2 = error2 + res2.norm() #print "norm", norm1, norm2 #THIS SHOULD HOLD, MAYBE ROUNDIGN ERROR? #self.assertGreaterEqual(error2, error1) self.assertGreaterEqual(norm1, norm2)
def test_sparse_ridge_regression(self): test_cases = self.pinv_test_cases for m, m_inv in test_cases: m1 = SparseMatrix(m) id_ = SparseMatrix.identity(m1.shape[0]) res1 = Linalg.lstsq_regression(m1, id_) np.testing.assert_array_almost_equal(res1.mat.todense(), m_inv, 7) res2 = Linalg.ridge_regression(m1, id_, 1)[0] error1 = (m1 * res1 - SparseMatrix(m_inv)).norm() error2 = (m1 * res2 - SparseMatrix(m_inv)).norm() #print "err", error1, error2 norm1 = error1 + res1.norm() norm2 = error2 + res2.norm() #print "norm", norm1, norm2 #THIS SHOULD HOLD, MAYBE ROUNDIGN ERROR? #self.assertGreaterEqual(error2, error1) self.assertGreaterEqual(norm1, norm2)
def train(self, matrix_a, matrix_b): return Linalg.lstsq_regression(matrix_a, matrix_b, self._intercept)
def train(self, matrix_a, matrix_b): return Linalg.lstsq_regression(matrix_a, matrix_b, self._intercept)