示例#1
0
 public IEnumerable<KeyValuePair<int, double>> GetTopNItems(int userId,int n)
 {
     IPrediction userPrediction = new WeightedPrediction();
     Dictionary<int, double> allItemPrediction = userPrediction.GetAllItemsPrediction(userId);
     var topNItems = allItemPrediction
         .OrderByDescending(s => s.Value)
         .Take(n);
     return topNItems;
 }
示例#2
0
        public static double Evaluate(int userId)
        {
            List<int> ratedItems = UserService.GetRatedItems(userId);

            IPrediction prediction = new WeightedPrediction();
            int N = ratedItems.Count;
            double absoluteError = 0d;
            foreach(var ratedItem in ratedItems)
            {
                double predicateRate = prediction.Predict(userId, ratedItem);
                double realRate = RatingService.GetRate(userId, ratedItem);
                absoluteError += Math.Abs(predicateRate - realRate);
            }

            return absoluteError / (double)N;
        }
示例#3
0
        public static double Evaluate()
        {
            List<int> userIds=DataStore.AllRatings
                .Select(s=>s.UserId)
                .Distinct()
                .ToList();

            int N = DataStore.AllRatings.Count;
            double absoluteError = 0d;
            foreach (var userId in userIds)
            {
                List<int> ratedItems = UserService.GetRatedItems(userId);
                IPrediction prediction = new WeightedPrediction();
                foreach (var ratedItem in ratedItems)
                {
                    double predicateRate = prediction.Predict(userId, ratedItem);
                    double realRate = RatingService.GetRate(userId, ratedItem);
                    absoluteError += Math.Abs(predicateRate - realRate);
                }
            }

            return absoluteError / (double)N;
        }