コード例 #1
0
 def test__compute_probabilities(self):
     lists = [[1, 2], [2, 3]]
     b = il.Optimized(lists, sample_num=3)
     rankings = []
     r = CreditRanking(num_rankers=len(lists), contents=[1, 2])
     r.credits = {0: {1: 1.0, 2: 0.5}, 1: {1: 1.0 / 3, 2: 1.0}}
     rankings.append(r)
     r = CreditRanking(num_rankers=len(lists), contents=[2, 1])
     r.credits = {0: {1: 1.0, 2: 0.5}, 1: {1: 1.0 / 3, 2: 1.0}}
     rankings.append(r)
     r = CreditRanking(num_rankers=len(lists), contents=[2, 3])
     r.credits = {0: {2: 0.5, 3: 1.0 / 3}, 1: {2: 1.0, 3: 0.5}}
     rankings.append(r)
     is_success, p, minimum = b._compute_probabilities(lists, rankings)
     assert is_success
     assert (p >= 0).all()
     assert (p <= 1).all()
     assert minimum >= 0
     self.assert_almost_equal(np.sum(p), 1)
     self.assert_almost_equal(np.inner([1 - 1.0 / 3, -0.5, -0.5], p), 0)
     self.assert_almost_equal(
         np.inner([0.5 - 1.0 / 3, 0.5 - 1.0 / 3, -1 + 1.0 / 3], p), 0)
     self.assert_almost_equal(p[0], 0.4285714273469387)
     self.assert_almost_equal(p[1], 0.37142857025306114)
     self.assert_almost_equal(p[2], 0.20000000240000002)
コード例 #2
0
ファイル: test_optimized.py プロジェクト: moonsn/interleaving
    def test__unbiasedness_constraints(self):
        lists = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
        b = il.Optimized(lists, sample_num=27)
        res = b._unbiasedness_constraints(lists, b._rankings)
        assert res.shape[0] == (3-1)*3
        assert res.shape[1] == len(b._rankings)

        lists = [[1, 2], [2, 3]]
        b = il.Optimized(lists, sample_num=3)
        res = b._unbiasedness_constraints(lists, b._rankings)
        ideal = {
            (1, 2): [1-1.0/3, 1.5-1.0-1.0/3],
            (2, 3): [0.5-1.0, 0.5+1.0/3-1.5],
            (2, 1): [0.5-1.0, 1.5-1.0-1.0/3]}
        assert res.shape == (2, 3)
        for i in range(2):
            for j, r in enumerate(b._rankings):
                res[i, j] = ideal[tuple(r)][i]

        lists = [[1, 2], [1, 3], [1, 4]]
        b = il.Optimized(lists, sample_num=3)
        rankings = []
        r = CreditRanking(num_rankers=len(lists), contents=[1, 2])
        r.credits = {
            0: {1: 1.0, 2: 0.5}, 1: {1: 1.0, 2: 1.0/3}, 2: {1: 1.0, 2: 1.0/3}}
        rankings.append(r)
        r = CreditRanking(num_rankers=len(lists), contents=[1, 3])
        r.credits = {
            0: {1: 1.0, 3: 1.0/3}, 1: {1: 1.0, 3: 0.5}, 2: {1: 1.0, 3: 1.0/3}}
        rankings.append(r)
        r = CreditRanking(num_rankers=len(lists), contents=[1, 4])
        r.credits = {
            0: {1: 1.0, 4: 1.0/3}, 1: {1: 1.0, 4: 1.0/3}, 2: {1: 1.0, 4: 0.5}}
        rankings.append(r)
        res = b._unbiasedness_constraints(lists, rankings)
        assert res.shape == (4, 3)
        assert res[0, 0] == 0 # Rank 1, Ranking 1, System 1 - System 2
        assert res[0, 1] == 0 # Rank 1, Ranking 2, System 1 - System 2
        assert res[0, 2] == 0 # Rank 1, Ranking 3, System 1 - System 2
        # Rank 2, Ranking 1, System 1 - System 2
        self.assert_almost_equal(res[1, 0], 0.5-1.0/3)
        # Rank 2, Ranking 2, System 1 - System 2
        self.assert_almost_equal(res[1, 1], 1.0/3-0.5)
        assert res[1, 2] == 0 # Rank 2, Ranking 3, System 1 - System 2
        assert res[2, 0] == 0 # Rank 1, Ranking 1, System 2 - System 3
        assert res[2, 1] == 0 # Rank 1, Ranking 2, System 2 - System 3
        assert res[2, 2] == 0 # Rank 1, Ranking 3, System 2 - System 3
        assert res[3, 0] == 0 # Rank 2, Ranking 1, System 2 - System 3
        # Rank 2, Ranking 2, System 2 - System 3
        self.assert_almost_equal(res[3, 1], 0.5-1.0/3)
        # Rank 2, Ranking 3, System 2 - System 3
        self.assert_almost_equal(res[3, 2], 1.0/3-0.5)
コード例 #3
0
 def setup(self):
     self.lists = [[1, 2], [2, 3]]
     self.rankings = []
     r = CreditRanking(num_rankers=len(self.lists), contents=[1, 2])
     r.credits = {0: {1: 1.0, 2: 0.5}, 1: {1: 1.0 / 3, 2: 0.0}}
     self.rankings.append(r)
     r = CreditRanking(num_rankers=len(self.lists), contents=[2, 1])
     r.credits = {0: {1: 1.0, 2: 0.5}, 1: {1: 0.5, 2: 1.0 / 3}}
     self.rankings.append(r)
     r = CreditRanking(num_rankers=len(self.lists), contents=[2, 3])
     r.credits = {0: {2: 0.5, 3: 1.0 / 3}, 1: {2: 1.0 / 3, 3: 0.0}}
     self.rankings.append(r)
     il.Optimized = il.RoughlyOptimized  # Trick
コード例 #4
0
ファイル: test_optimized.py プロジェクト: moonsn/interleaving
 def test__sensitivity(self):
     lists = [[1, 2], [2, 3]]
     b = il.Optimized(lists, sample_num=3)
     rankings = []
     r = CreditRanking(num_rankers=len(lists), contents=[1, 2])
     r.credits = {0: {1: 1.0, 2: 0.5}, 1: {1: 1.0/3, 2: 1.0}}
     rankings.append(r)
     r = CreditRanking(num_rankers=len(lists), contents=[2, 1])
     r.credits = {0: {1: 1.0, 2: 0.5}, 1: {1: 1.0/3, 2: 1.0}}
     rankings.append(r)
     r = CreditRanking(num_rankers=len(lists), contents=[2, 3])
     r.credits = {0: {2: 0.5, 3: 1.0/3}, 1: {2: 1.0, 3: 0.5}}
     rankings.append(r)
     res = b._sensitivity(lists, rankings)
     assert len(res) == 3
     assert res[0] == ((1 + 0.5 * 0.5 - (1.75+1.0/3)/2) ** 2 + (1.0/3+0.5 - (1.75+1.0/3)/2) ** 2)
     assert res[1] == ((0.5 + 0.5 - (2.0+0.5/3)/2) ** 2 + (1.0+1.0/3*0.5 - (2.0+0.5/3)/2) ** 2)
     assert res[2] == ((0.5 + 0.5 * 1.0/3 - (1.75+0.5/3)/2) ** 2\
         + (1.0 + 0.5 * 0.5 - (1.75+0.5/3)/2) ** 2)