Пример #1
0
    def test_intra_list_diversity_sample_float(self):
        metric = DiversityRecoMetrics.IntraListDiversity(self.item_features, click_column='score', k=4,
                                                         user_sample_size=0.8)
        results = metric.get_score(self.actual, self.predicted, batch_accumulate=False, return_extended_results=True)

        self.assertEqual(0.268, np.round(results['intra-list diversity'], 3))
        self.assertEqual(2, results['support'])
Пример #2
0
    def test_intra_list_diversity_sample_one_item(self):
        with warnings.catch_warnings():
            warnings.simplefilter("ignore")
            metric = DiversityRecoMetrics.IntraListDiversity(self.item_features, click_column='score', k=1)
            results = metric.get_score(self.actual, self.predicted, batch_accumulate=False,
                                       return_extended_results=True)

            self.assertEqual(None, results)
Пример #3
0
    def test_intra_list_diversity_sample_default(self):
        metric = DiversityRecoMetrics.IntraListDiversity(self.item_features, click_column='score', k=4)
        with warnings.catch_warnings(record=True) as w:
            results = metric.get_score(self.actual, self.predicted, batch_accumulate=False,
                                       return_extended_results=True)

        self.assertEqual(0.267, np.round(results['intra-list diversity'], 3))
        self.assertEqual(3, results['support'])
Пример #4
0
    def test_intra_list_diversity_metric_euclidean(self):
        metric = DiversityRecoMetrics.IntraListDiversity(self.item_features, click_column='score', k=4,
                                                         metric='euclidean')
        with warnings.catch_warnings(record=True) as w:
            results = metric.get_score(self.actual, self.predicted, batch_accumulate=False,
                                       return_extended_results=True)

        self.assertEqual(round(results['intra-list diversity'], 3), 1.307)
        self.assertEqual(results['support'], 3)
Пример #5
0
    def test_intra_list_diversity_one(self):
        actual = pd.DataFrame({Constants.user_id: [0, 0],
                               Constants.item_id: [0, 1],
                               'score': [1, 1]})
        predicted = pd.DataFrame({Constants.user_id: [0, 0],
                                  Constants.item_id: [0, 1],
                                  'score': [1, 1]})
        item_features = pd.DataFrame({Constants.item_id: [0, 1],
                                      'feat1': [0, 1]})

        metric = DiversityRecoMetrics.IntraListDiversity(item_features, click_column='score', k=2)
        with warnings.catch_warnings(record=True) as w:
            results = metric.get_score(actual, predicted, batch_accumulate=False,
                                       return_extended_results=True)

        self.assertEqual(results['intra-list diversity'], 1)
        self.assertEqual(1, results['support'])
Пример #6
0
 def test_intra_list_diversity_batch_accumulate_true(self):
     metric = DiversityRecoMetrics.IntraListDiversity(self.item_features, click_column='score', k=4)
     with warnings.catch_warnings(record=True) as w:
         results = metric.get_score(self.actual, self.predicted, batch_accumulate=True, return_extended_results=True)
Пример #7
0
 def test_intra_list_diversity_sample_int_zero(self):
     with self.assertRaises(ValueError):
         # This should fail when user_sample_size is set to be 0.
         metric = DiversityRecoMetrics.IntraListDiversity(self.item_features, click_column='score', k=4,
                                                          user_sample_size=0)