|
10 | 10 |
|
11 | 11 | import pandas as pd |
12 | 12 | from mabwiser.linear import _Linear |
| 13 | +from jurity.recommenders import DiversityRecoMetrics |
13 | 14 |
|
14 | 15 | from mab2rec import BanditRecommender, LearningPolicy, NeighborhoodPolicy |
15 | 16 | from mab2rec.pipeline import train, score, benchmark |
@@ -390,3 +391,25 @@ def test_benchmark_cv(self): |
390 | 391 |
|
391 | 392 | for rec in recommenders.values(): |
392 | 393 | self.assertTrue(rec.mab is None) |
| 394 | + |
| 395 | + def test_benchmark_diversity_metrics(self): |
| 396 | + recommenders = deepcopy(self.recommenders) |
| 397 | + metrics = [] |
| 398 | + metric_params = {'click_column': Constants.score, |
| 399 | + 'user_id_column': Constants.user_id, |
| 400 | + 'item_id_column': Constants.item_id} |
| 401 | + for k in [3, 5]: |
| 402 | + metrics.append(DiversityRecoMetrics.InterListDiversity(**metric_params, k=k, |
| 403 | + user_sample_size=100)) |
| 404 | + metrics.append(DiversityRecoMetrics.IntraListDiversity(**metric_params, k=k, |
| 405 | + user_sample_size=100, |
| 406 | + item_features=item_features_df)) |
| 407 | + |
| 408 | + recommendations, rec_metrics = benchmark(recommenders, metrics, train_data, test_data, |
| 409 | + user_features=user_features_df) |
| 410 | + self.assertEqual(recommendations.keys(), self.recommenders.keys()) |
| 411 | + self.assertEqual(rec_metrics.keys(), self.recommenders.keys()) |
| 412 | + self.assertAlmostEqual(rec_metrics["Random"]["Inter-List Diversity@3"], 0.9856228956228957) |
| 413 | + self.assertAlmostEqual(rec_metrics["Random"]["Inter-List Diversity@5"], 0.9749818181818182) |
| 414 | + self.assertAlmostEqual(rec_metrics["Random"]["Intra-List Diversity@3"], 0.7602157694547105) |
| 415 | + self.assertAlmostEqual(rec_metrics["Random"]["Intra-List Diversity@5"], 0.7547351779782561) |
0 commit comments