Example #1
0
        public void computing_distance_between_users()
        {
            RecoContext c = new RecoContext();

            c.LoadFrom(_goodDataPath);
            double d = c.DistanceNorm2(c.Users[13], c.Users[89]);
        }
Example #2
0
        public void test_movies_similarity()
        {
            var data    = new TestData();
            var context = new RecoContext();

            Assert.That(context.SimilarityPearson(data.Movies[0], data.Movies[0], data.Users), Is.EqualTo(1.000).Within(0.0005));
            Assert.That(context.SimilarityPearson(data.Movies[0], data.Movies[1], data.Users), Is.EqualTo(0.790).Within(0.0005));
            Assert.That(context.SimilarityPearson(data.Movies[0], data.Movies[2], data.Users), Is.EqualTo(0.436).Within(0.0005));
            Assert.That(context.SimilarityPearson(data.Movies[0], data.Movies[3], data.Users), Is.EqualTo(-0.511).Within(0.0005));
            Assert.That(context.SimilarityPearson(data.Movies[0], data.Movies[4], data.Users), Is.EqualTo(-0.406).Within(0.0005));
            Assert.That(context.SimilarityPearson(data.Movies[0], data.Movies[5], data.Users), Is.EqualTo(0.878).Within(0.0005));

            Assert.That(context.SimilarityPearson(data.Movies[1], data.Movies[1], data.Users), Is.EqualTo(1.000).Within(0.0005));
            Assert.That(context.SimilarityPearson(data.Movies[1], data.Movies[2], data.Users), Is.EqualTo(0.603).Within(0.0005));
            Assert.That(context.SimilarityPearson(data.Movies[1], data.Movies[3], data.Users), Is.EqualTo(-0.047).Within(0.0005));
            Assert.That(context.SimilarityPearson(data.Movies[1], data.Movies[4], data.Users), Is.EqualTo(-0.262).Within(0.0005));
            Assert.That(context.SimilarityPearson(data.Movies[1], data.Movies[5], data.Users), Is.EqualTo(0.472).Within(0.0005));

            Assert.That(context.SimilarityPearson(data.Movies[2], data.Movies[2], data.Users), Is.EqualTo(1.000).Within(0.0005));
            Assert.That(context.SimilarityPearson(data.Movies[2], data.Movies[3], data.Users), Is.EqualTo(0.156).Within(0.0005));
            Assert.That(context.SimilarityPearson(data.Movies[2], data.Movies[4], data.Users), Is.EqualTo(0.372).Within(0.0005));
            Assert.That(context.SimilarityPearson(data.Movies[2], data.Movies[5], data.Users), Is.EqualTo(0.224).Within(0.0005));

            Assert.That(context.SimilarityPearson(data.Movies[3], data.Movies[3], data.Users), Is.EqualTo(1.000).Within(0.0005));
            Assert.That(context.SimilarityPearson(data.Movies[3], data.Movies[4], data.Users), Is.EqualTo(0.562).Within(0.0005));
            Assert.That(context.SimilarityPearson(data.Movies[3], data.Movies[5], data.Users), Is.EqualTo(-0.489).Within(0.0005));

            Assert.That(context.SimilarityPearson(data.Movies[4], data.Movies[4], data.Users), Is.EqualTo(1.000).Within(0.0005));
            Assert.That(context.SimilarityPearson(data.Movies[4], data.Movies[5], data.Users), Is.EqualTo(-0.388).Within(0.0005));

            Assert.That(context.SimilarityPearson(data.Movies[5], data.Movies[5], data.Users), Is.EqualTo(1.000).Within(0.0005));
        }
Example #3
0
 public void check_known_similarities()
 {
     Assert.That(RecoContext.SimilarityPearson(_context.Users[3712], _context.Users[3640]), Is.EqualTo(0.161633188914379).Within(1e-15));
     Assert.That(RecoContext.SimilarityPearson(_context.Users[3712], _context.Users[486]), Is.EqualTo(-0.18978131929287).Within(1e-15));
     Assert.That(RecoContext.SimilarityPearson(_context.Users[3712], _context.Users[286]), Is.EqualTo(0.00577164323971453).Within(1e-15));
     Assert.That(RecoContext.SimilarityPearson(_context.Users[3640], _context.Users[486]), Is.EqualTo(-0.151923076923077).Within(1e-15));
     Assert.That(RecoContext.SimilarityPearson(_context.Users[3640], _context.Users[286]), Is.EqualTo(0.28064295060584).Within(1e-15));
     Assert.That(RecoContext.SimilarityPearson(_context.Users[486], _context.Users[286]), Is.EqualTo(-0.692820323027552).Within(1e-15));
 }
Example #4
0
 public void LoadTestDataOnlyOnce()
 {
     if (_context == null)
     {
         var c = new RecoContext();
         if (c.LoadFrom(GetGoodDataPath()))
         {
             _context = c;
         }
     }
 }
Example #5
0
        public void computing_similar_users()
        {
            RecoContext c = new RecoContext();

            c.LoadFrom(_goodDataPath);

            User u = c.Users[3712];

            SimilarUser[] similarUsers = c.GetSimilarUsers(u, 2000);

            Assert.That(similarUsers.Count, Is.EqualTo(2000));
        }
Example #6
0
        public void ReadMovieData()
        {
            RecoContext c = new RecoContext();

            c.LoadFrom(_goodDataPath);
            for (int i = 0; i < c.Users.Length; ++i)
            {
                Assert.That(c.Users[i].UserID, Is.EqualTo(i + 1));
            }
            for (int i = 0; i < c.Movies.Length; ++i)
            {
                Assert.That(c.Movies[i].MovieID, Is.EqualTo(i + 1));
            }
        }
Example #7
0
        public void computing_intersection_movies_algo()
        {
            RecoContext c = new RecoContext();

            c.LoadFrom(_goodDataPath);
            int count = 2000;

            User u = c.Users[3712]; // contains first recommended 'Stop Making Sense (1984)'

            SimilarUser[] similarUsers = c.GetSimilarUsers(u, 2000);
            List <Movie>  recommendedMoviesUserBased = c.GetRecommendedMovies(u, similarUsers, count);

            Movie m = c.Movies[2791]; // 'Stop Making Sense (1984)'

            SimilarMovie[] SimilarMovies = c.GetSimilarMovies(m, 200);
            List <Movie>   recommendedMoviesItemBased = c.GetRecommendedMovies(m, SimilarMovies, count);

            var common = recommendedMoviesUserBased.Intersect(recommendedMoviesItemBased).ToArray();
        }
Example #8
0
        public void computing_the_distance_between_2_users()
        {
            RecoContext c = new RecoContext();

            c.LoadFrom(_goodDataPath);

            const int part = 10;

            for (int i = 0; i < c.Users.Length / part; i++)
            {
                var u1 = c.Users[i];
                Assert.That(c.DistanceNorm2(u1, u1), Is.EqualTo(0));
                for (int j = i + 1; j < c.Users.Length / part; j++)
                {
                    var u2 = c.Users[j];
                    Assert.That(c.DistanceNorm2(u1, u2), Is.EqualTo(c.DistanceNorm2(u2, u1)));
                }
            }
        }
Example #9
0
        public void computing_recommended_movies()
        {
            RecoContext c = new RecoContext();

            c.LoadFrom(_goodDataPath);
            int count = 10;

            User u = c.Users[3712];

            SimilarUser[] similarUsers      = c.GetSimilarUsers(u, 2000);
            List <Movie>  recommendedMovies = c.GetRecommendedMovies(u, similarUsers, count);

            Assert.That(recommendedMovies.Count, Is.EqualTo(count));

            Console.WriteLine(" User Based Recommendation for userId: {0} (Best {1}): ", u.UserID, count);
            foreach (Movie m in recommendedMovies)
            {
                Console.WriteLine("Movie: '{0}'-{1}", m.Title, m.MovieID);
            }
        }
Example #10
0
        public void computing_recommended_movies_by_items()
        {
            RecoContext c = new RecoContext();

            c.LoadFrom(_goodDataPath);
            c.computingMovieAverage();
            int count = 10;

            Movie m = c.Movies[1177];

            SimilarMovie[] SimilarMovies = c.GetSimilarMovies(m, 200);

            List <Movie> recommendedMovies = c.GetRecommendedMovies(m, SimilarMovies, count);

            Assert.That(recommendedMovies.Count, Is.EqualTo(count));

            Console.WriteLine("Item Based Recommendation for: '{0}' (Best {1}): ", m.Title, count);

            foreach (Movie movie in recommendedMovies)
            {
                Console.WriteLine("Movie: '{0}'-{1}", movie.Title, movie.MovieID);
            }
        }
Example #11
0
 public void ReadMovieData()
 {
     RecoContext c = new RecoContext();
     c.LoadFrom( _goodDataPath );
     for( int i = 0; i < c.Users.Length; ++i )
         Assert.That( c.Users[i].UserID, Is.EqualTo( i+1 ) );
     for( int i = 0; i < c.Movies.Length; ++i )
         Assert.That( c.Movies[i].MovieID, Is.EqualTo( i+1 ) );
 }