public double EvaluateScoreForUSer(int userId, ISettings settings)
        {
            _helpers.SaveSettings(settings.Id);
            var users        = _selector.SelectUsersIdsToCompareWith(userId);
            var similarUsers = _nearestNeighbors.GetNearestNeighbors(userId, users, settings);
            var scores       = _recommender.PredictScoreForAllUsersBooks(similarUsers, userId);

            _helpers.PersistSimilarUsersInDb(similarUsers, settings.Id);
            _helpers.PersistTestResult(scores, settings.Id);

            return(EvaluatePredictionsUsingRSME(scores));
        }
Beispiel #2
0
        public void EvaluateScoreForUSer_ShouldComputeError(double[] predicted, short[] actual,
                                                            double error)
        {
            const int userId = 1;
            var       scores = _testHelpers.CreateBookScores(userId, new[] { "1", "2", "3" }, actual, predicted).ToList();
            var       users  = new List <int> {
            };
            var similarUsers = new List <UsersSimilarity>();

            _selector.SelectUsersIdsToCompareWith(userId).Returns(users);
            _nearestNeighbors.GetNearestNeighbors(userId, users, _settings).Returns(similarUsers);
            _recommender.PredictScoreForAllUsersBooks(similarUsers, userId).Returns(scores);

            _sut.EvaluateScoreForUSer(userId, _settings).ShouldBe(error);
            _cfHelpers.Received().PersistSimilarUsersInDb(similarUsers, _settings.Id);
            _cfHelpers.Received().PersistTestResult(scores, _settings.Id);
            _cfHelpers.Received().SaveSettings(_settings.Id);
        }
Beispiel #3
0
        public Book[] RecommendBooksForUser(int userId, ISettings settings)
        {
            // get from db by default
            var books = _recommender.GetRecommendedBooksFromDatabase(userId);

            if (books.Length != 0)
            {
                return(books);
            }

            var users        = _selector.SelectUsersIdsToCompareWith(userId);
            var similarUsers = _nearestNeighbors.GetNearestNeighbors(userId, users, settings);

            return(_recommender.GetRecommendedBooks(similarUsers, userId));
        }