public void TestHowMany()
 {
     List<User> users = new List<User>(3);
     users.Add(GetUser("test1", 0.1, 0.2));
     users.Add(GetUser("test2", 0.2, 0.3, 0.3, 0.6));
     users.Add(GetUser("test3", 0.4, 0.4, 0.5, 0.9));
     users.Add(GetUser("test4", 0.1, 0.4, 0.5, 0.8, 0.9, 1.0));
     users.Add(GetUser("test5", 0.2, 0.3, 0.6, 0.7, 0.1, 0.2));
     DataModel dataModel = new GenericDataModel(users);
     IList<GenericItemCorrelation.ItemItemCorrelation> correlations =
        new List<GenericItemCorrelation.ItemItemCorrelation>(6);
     for (int i = 0; i < 6; i++)
     {
         for (int j = i + 1; j < 6; j++)
         {
             correlations.Add(
                 new GenericItemCorrelation.ItemItemCorrelation(new GenericItem<String>(i.ToString()),
                                                                new GenericItem<String>(j.ToString()),
                                                                1.0 / (1.0 + (double)i + (double)j)));
         }
     }
     ItemCorrelation correlation = new GenericItemCorrelation(correlations);
     Recommender recommender = new GenericItemBasedRecommender(dataModel, correlation);
     IList<RecommendedItem> fewRecommended = recommender.Recommend("test1", 2);
     IList<RecommendedItem> moreRecommended = recommender.Recommend("test1", 4);
     for (int i = 0; i < fewRecommended.Count; i++)
     {
         Assert.AreEqual(fewRecommended[i].Item, moreRecommended[i].Item);
     }
 }
 public void TestRescorer()
 {
     List<User> users = new List<User>(3);
     users.Add(GetUser("test1", 0.1, 0.2));
     users.Add(GetUser("test2", 0.2, 0.3, 0.3, 0.6));
     users.Add(GetUser("test3", 0.4, 0.4, 0.5, 0.9));
     DataModel dataModel = new GenericDataModel(users);
     Item item1 = new GenericItem<String>("0");
     Item item2 = new GenericItem<String>("1");
     Item item3 = new GenericItem<String>("2");
     Item item4 = new GenericItem<String>("3");
     ICollection<GenericItemCorrelation.ItemItemCorrelation> correlations =
        new List<GenericItemCorrelation.ItemItemCorrelation>(6);
     correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item1, item2, 1.0));
     correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item1, item3, 0.5));
     correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item1, item4, 0.2));
     correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item2, item3, 0.7));
     correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item2, item4, 0.5));
     correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item3, item4, 0.9));
     ItemCorrelation correlation = new GenericItemCorrelation(correlations);
     Recommender recommender = new GenericItemBasedRecommender(dataModel, correlation);
     IList<RecommendedItem> originalRecommended = recommender.Recommend("test1", 2);
     IList<RecommendedItem> rescoredRecommended =
        recommender.Recommend("test1", 2, new ReversingRescorer<Item>());
     Assert.IsNotNull(originalRecommended);
     Assert.IsNotNull(rescoredRecommended);
     Assert.AreEqual(2, originalRecommended.Count);
     Assert.AreEqual(2, rescoredRecommended.Count);
     Assert.AreEqual(originalRecommended[0].Item, rescoredRecommended[1].Item);
     Assert.AreEqual(originalRecommended[1].Item, rescoredRecommended[0].Item);
 }
 private static ItemBasedRecommender buildRecommender2()
 {
     List<User> users = new List<User>(4);
     users.Add(GetUser("test1", 0.1, 0.3, 0.9, 0.8));
     users.Add(GetUser("test2", 0.2, 0.3, 0.3, 0.4));
     users.Add(GetUser("test3", 0.4, 0.3, 0.5, 0.1, 0.1));
     users.Add(GetUser("test4", 0.7, 0.3, 0.8, 0.5, 0.6));
     DataModel dataModel = new GenericDataModel(users);
     ICollection<GenericItemCorrelation.ItemItemCorrelation> correlations =
        new List<GenericItemCorrelation.ItemItemCorrelation>(10);
     Item item1 = new GenericItem<String>("0");
     Item item2 = new GenericItem<String>("1");
     Item item3 = new GenericItem<String>("2");
     Item item4 = new GenericItem<String>("3");
     Item item5 = new GenericItem<String>("4");
     correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item1, item2, 1.0));
     correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item1, item3, 0.8));
     correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item1, item4, -0.6));
     correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item1, item5, 1.0));
     correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item2, item3, 0.9));
     correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item2, item4, 0.0));
     correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item2, item2, 1.0));
     correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item3, item4, -0.1));
     correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item3, item5, 0.1));
     correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item4, item5, -0.5));
     ItemCorrelation correlation = new GenericItemCorrelation(correlations);
     return new GenericItemBasedRecommender(dataModel, correlation);
 }
 private static ItemBasedRecommender buildRecommender()
 {
     DataModel dataModel = new GenericDataModel(GetMockUsers());
     ICollection<GenericItemCorrelation.ItemItemCorrelation> correlations =
        new List<GenericItemCorrelation.ItemItemCorrelation>(2);
     Item item1 = new GenericItem<String>("0");
     Item item2 = new GenericItem<String>("1");
     Item item3 = new GenericItem<String>("2");
     correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item1, item2, 1.0));
     correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item1, item3, 0.5));
     ItemCorrelation correlation = new GenericItemCorrelation(correlations);
     return new GenericItemBasedRecommender(dataModel, correlation);
 }