def test_add_rows_svd(self): test_cases = [(self.space2, np.vstack([self.us2[0], self.us2[0]]), self.m1, ["e"], ["f"], {"e":0, "f":1})] red1 = Svd(2) red2 = Svd(1) for in_s, expected_mat, data, id2row1, id2row2, row2id in test_cases: in_s = in_s.apply(red1) in_s = in_s.apply(red2) per_s = PeripheralSpace(in_s, DenseMatrix(data), id2row1) per_s.add_rows(DenseMatrix(data), id2row2) np.testing.assert_array_almost_equal(expected_mat, per_s.cooccurrence_matrix.mat, 2) self.assertListEqual(per_s.id2row, id2row1 + id2row2) self.assertListEqual(per_s.id2column, []) self.assertDictEqual(per_s.row2id, row2id) self.assertDictEqual(per_s.column2id, {}) self.assertEqual(2, len(per_s.operations))
def test_add_rows(self): test_cases = [(self.space1, self.m2, self.row2, np.array([[4, 2, 6]]), ["c"], np.array([[4, 2, 6], [4, 2, 6]]), np.array([[0.69314718, 0, 0], [0.69314718, 0, 0]]), { "b": 0, "c": 1 }, ["b", "c"])] for (core_sp, per_mat1, id2row1, per_mat2, id2row2, per_exp_mat1, per_exp_mat2, per_exp_row2id, per_exp_id2row) in test_cases: per_sp = PeripheralSpace(core_sp, DenseMatrix(per_mat1), id2row1) per_sp.add_rows(DenseMatrix(per_mat2), id2row2) np.testing.assert_array_almost_equal( per_sp.cooccurrence_matrix.mat, per_exp_mat1, 7) self.assertDictEqual(per_sp.row2id, per_exp_row2id) self.assertListEqual(per_sp.id2row, per_exp_id2row) self.assertDictEqual(per_sp.column2id, core_sp.column2id) self.assertListEqual(per_sp.id2column, core_sp.id2column) core_sp2 = core_sp.apply(PpmiWeighting()) per_sp2 = PeripheralSpace(core_sp2, DenseMatrix(per_mat1), id2row1) per_sp2.add_rows(DenseMatrix(per_mat2), id2row2) np.testing.assert_array_almost_equal( per_sp2.cooccurrence_matrix.mat, per_exp_mat2, 7) self.assertRaises(ValueError, per_sp2.add_rows, DenseMatrix(per_mat2), id2row1) self.assertRaises(ValueError, per_sp2.add_rows, DenseMatrix(per_mat2), id2row2) self.assertRaises(ValueError, per_sp2.add_rows, DenseMatrix(per_mat2), ["d", "e"])
def test_add_rows_svd(self): test_cases = [(self.space2, np.vstack([self.us2[0], self.us2[0]]), self.m1, ["e"], ["f"], { "e": 0, "f": 1 })] red1 = Svd(2) red2 = Svd(1) for in_s, expected_mat, data, id2row1, id2row2, row2id in test_cases: in_s = in_s.apply(red1) in_s = in_s.apply(red2) per_s = PeripheralSpace(in_s, DenseMatrix(data), id2row1) per_s.add_rows(DenseMatrix(data), id2row2) np.testing.assert_array_almost_equal(expected_mat, per_s.cooccurrence_matrix.mat, 2) self.assertListEqual(per_s.id2row, id2row1 + id2row2) self.assertListEqual(per_s.id2column, []) self.assertDictEqual(per_s.row2id, row2id) self.assertDictEqual(per_s.column2id, {}) self.assertEqual(2, len(per_s.operations))
def test_add_rows(self): test_cases = [(self.space1, self.m2, self.row2, np.array([[4,2,6]]), ["c"], np.array([[4,2,6],[4,2,6]]), np.array([[0.69314718,0,0],[0.69314718,0,0]]), {"b":0,"c":1}, ["b", "c"])] for (core_sp, per_mat1, id2row1, per_mat2, id2row2, per_exp_mat1, per_exp_mat2, per_exp_row2id, per_exp_id2row) in test_cases: per_sp = PeripheralSpace(core_sp, DenseMatrix(per_mat1), id2row1) per_sp.add_rows(DenseMatrix(per_mat2), id2row2) np.testing.assert_array_almost_equal(per_sp.cooccurrence_matrix.mat, per_exp_mat1, 7) self.assertDictEqual(per_sp.row2id, per_exp_row2id) self.assertListEqual(per_sp.id2row, per_exp_id2row) self.assertDictEqual(per_sp.column2id, core_sp.column2id) self.assertListEqual(per_sp.id2column, core_sp.id2column) core_sp2 = core_sp.apply(PpmiWeighting()) per_sp2 = PeripheralSpace(core_sp2, DenseMatrix(per_mat1), id2row1) per_sp2.add_rows(DenseMatrix(per_mat2), id2row2) np.testing.assert_array_almost_equal(per_sp2.cooccurrence_matrix.mat, per_exp_mat2, 7) self.assertRaises(ValueError, per_sp2.add_rows, DenseMatrix(per_mat2), id2row1) self.assertRaises(ValueError, per_sp2.add_rows, DenseMatrix(per_mat2), id2row2) self.assertRaises(ValueError, per_sp2.add_rows, DenseMatrix(per_mat2), ["d", "e"])
def test_per_space_top_feat_selection(self): test_cases = [(self.space_d, 1, ["f3"], {"f3":0}, np.mat([[3],[5]])), (self.space_d, 2, ["f3", "f1"], {"f3":0, "f1":1}, np.mat([[3,1],[5,4]])), (self.space_d, 4, ["f3", "f1", "f2"], {"f3":0, "f1":1, "f2":2}, np.mat([[3,1,2],[5,4,0]])) ] for space_d, no_dim, id2col, col2id, mat in test_cases: trans = TopFeatureSelection(no_dim) new_space = space_d.apply(trans) #peripheral test simple test per_sp = PeripheralSpace(new_space, DenseMatrix(self.a), ["c","d"]) self.assertListEqual(per_sp.id2row, ["c","d"]) self.assertListEqual(per_sp.id2column, id2col) self.assertDictEqual(per_sp.column2id, col2id) np.testing.assert_array_equal(per_sp.cooccurrence_matrix.mat, mat) #peripheral test with add rows per_sp = PeripheralSpace(new_space, DenseMatrix(self.a[0,:]), ["c"]) per_sp.add_rows(DenseMatrix(self.a[1,:]), ["d"]) self.assertListEqual(per_sp.id2row, ["c","d"]) self.assertListEqual(per_sp.id2column, id2col) self.assertDictEqual(per_sp.column2id, col2id) np.testing.assert_array_equal(per_sp.cooccurrence_matrix.mat, mat) #peripheral test, with plog applied to core BEFORE feat selection plogmat = mat.copy() plogmat[plogmat==0] = 1 plogmat = np.log(plogmat) new_space = space_d.apply(PlogWeighting()) trans = TopFeatureSelection(no_dim) new_space = new_space.apply(trans) per_sp = PeripheralSpace(new_space, DenseMatrix(self.a), ["c","d"]) self.assertListEqual(per_sp.id2row, ["c","d"]) self.assertListEqual(per_sp.id2column, id2col) self.assertDictEqual(per_sp.column2id, col2id) np.testing.assert_array_almost_equal(per_sp.cooccurrence_matrix.mat, plogmat, 7) #peripheral test, with plog applied to core AFTER feat selection trans = TopFeatureSelection(no_dim) new_space = space_d.apply(trans) new_space = new_space.apply(PlogWeighting()) per_sp = PeripheralSpace(new_space, DenseMatrix(self.a), ["c","d"]) self.assertListEqual(per_sp.id2row, ["c","d"]) self.assertListEqual(per_sp.id2column, id2col) self.assertDictEqual(per_sp.column2id, col2id) np.testing.assert_array_almost_equal(per_sp.cooccurrence_matrix.mat, plogmat, 7)
def test_per_space_top_feat_selection(self): test_cases = [(self.space_d, 1, ["f3"], { "f3": 0 }, np.mat([[3], [5]])), (self.space_d, 2, ["f3", "f1"], { "f3": 0, "f1": 1 }, np.mat([[3, 1], [5, 4]])), (self.space_d, 4, ["f3", "f1", "f2"], { "f3": 0, "f1": 1, "f2": 2 }, np.mat([[3, 1, 2], [5, 4, 0]]))] for space_d, no_dim, id2col, col2id, mat in test_cases: trans = TopFeatureSelection(no_dim) new_space = space_d.apply(trans) #peripheral test simple test per_sp = PeripheralSpace(new_space, DenseMatrix(self.a), ["c", "d"]) self.assertListEqual(per_sp.id2row, ["c", "d"]) self.assertListEqual(per_sp.id2column, id2col) self.assertDictEqual(per_sp.column2id, col2id) np.testing.assert_array_equal(per_sp.cooccurrence_matrix.mat, mat) #peripheral test with add rows per_sp = PeripheralSpace(new_space, DenseMatrix(self.a[0, :]), ["c"]) per_sp.add_rows(DenseMatrix(self.a[1, :]), ["d"]) self.assertListEqual(per_sp.id2row, ["c", "d"]) self.assertListEqual(per_sp.id2column, id2col) self.assertDictEqual(per_sp.column2id, col2id) np.testing.assert_array_equal(per_sp.cooccurrence_matrix.mat, mat) #peripheral test, with plog applied to core BEFORE feat selection plogmat = mat.copy() plogmat[plogmat == 0] = 1 plogmat = np.log(plogmat) new_space = space_d.apply(PlogWeighting()) trans = TopFeatureSelection(no_dim) new_space = new_space.apply(trans) per_sp = PeripheralSpace(new_space, DenseMatrix(self.a), ["c", "d"]) self.assertListEqual(per_sp.id2row, ["c", "d"]) self.assertListEqual(per_sp.id2column, id2col) self.assertDictEqual(per_sp.column2id, col2id) np.testing.assert_array_almost_equal( per_sp.cooccurrence_matrix.mat, plogmat, 7) #peripheral test, with plog applied to core AFTER feat selection trans = TopFeatureSelection(no_dim) new_space = space_d.apply(trans) new_space = new_space.apply(PlogWeighting()) per_sp = PeripheralSpace(new_space, DenseMatrix(self.a), ["c", "d"]) self.assertListEqual(per_sp.id2row, ["c", "d"]) self.assertListEqual(per_sp.id2column, id2col) self.assertDictEqual(per_sp.column2id, col2id) np.testing.assert_array_almost_equal( per_sp.cooccurrence_matrix.mat, plogmat, 7)