コード例 #1
0
    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))
コード例 #2
0
    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"])
コード例 #3
0
    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))
コード例 #4
0
    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"])
コード例 #5
0
    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)
コード例 #6
0
    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)