class PearsonCFRecommenderTest(unittest.TestCase): def setUp(self): mock_broker = MagicMock() self.recommender = SommelierPearsonCFRecommender(b=mock_broker) # test args for both sorted_rankings and sorted_similarities # these consist of an id and a dict of user preferences of the format: { id: [ list, of, ratings ] } # In this test data user 1 has 3 ratings in common with the others, the first three (0, 1 and 2). # Users 2, 3 and 4 have each rated the last two items (3 and 4), whereas user 1 has not. # Items 3 and 4 have been given identical rankings by users 2, 3 and 4 ... test_args = ( 1, { 1: [ 1, 2, 3, 0, 0 ], 2: [ 1, 2, 3, 3, 4 ], 3: [ 3, 2, 1, 3, 4 ], 4: [ 1, 2, 3, 3, 4 ] } ) # ... so the rankings should be 4.0 for item 4 and 3.0 for item 3, with item 4 first in the list # as it has the higher rating sorted_rankings_expected = [(4.0, 4), (3.0, 3)] # covers recommender.sorted_rankings def test_sorted_rankings(self): self.assertEqual(self.sorted_rankings_expected, self.recommender.sorted_rankings(*self.test_args)) # We can use the same arguments from above to test the sorted_similarities() method # this method will look at the pearson score for each of the users. The ratings in this # case are loaded so that users 2 and 4 have identical ratings as 1, so will be recommended # in that order. User 3 has inverse ratings to user 1, so they will score -1.0 and not # be returned by the method sorted_similarities_expected = [(2, 1.0), (4, 1.0)] # covers recommender.sorted_similarities def test_sorted_similarities(self): self.assertEqual(self.sorted_similarities_expected, self.recommender.sorted_similarities(*self.test_args))
class PearsonCFRecommenderTest(unittest.TestCase): def setUp(self): mock_broker = MagicMock() self.recommender = SommelierPearsonCFRecommender(b=mock_broker) # test args for both sorted_rankings and sorted_similarities # these consist of an id and a dict of user preferences of the format: { id: [ list, of, ratings ] } # In this test data user 1 has 3 ratings in common with the others, the first three (0, 1 and 2). # Users 2, 3 and 4 have each rated the last two items (3 and 4), whereas user 1 has not. # Items 3 and 4 have been given identical rankings by users 2, 3 and 4 ... test_args = (1, { 1: [1, 2, 3, 0, 0], 2: [1, 2, 3, 3, 4], 3: [3, 2, 1, 3, 4], 4: [1, 2, 3, 3, 4] }) # ... so the rankings should be 4.0 for item 4 and 3.0 for item 3, with item 4 first in the list # as it has the higher rating sorted_rankings_expected = [(4.0, 4), (3.0, 3)] # covers recommender.sorted_rankings def test_sorted_rankings(self): self.assertEqual(self.sorted_rankings_expected, self.recommender.sorted_rankings(*self.test_args)) # We can use the same arguments from above to test the sorted_similarities() method # this method will look at the pearson score for each of the users. The ratings in this # case are loaded so that users 2 and 4 have identical ratings as 1, so will be recommended # in that order. User 3 has inverse ratings to user 1, so they will score -1.0 and not # be returned by the method sorted_similarities_expected = [(2, 1.0), (4, 1.0)] # covers recommender.sorted_similarities def test_sorted_similarities(self): self.assertEqual(self.sorted_similarities_expected, self.recommender.sorted_similarities(*self.test_args))
def setUp(self): mock_broker = MagicMock() self.recommender = SommelierPearsonCFRecommender(b=mock_broker)