//TODO fix this private static double[] GetTopXAmountOfRatings(int amountOfRatings, KeyValueObject[] nearestNeighbours, Dictionary <int, Dictionary <int, double> > dictionary) { var uniqueItemIds = new List <int>(); foreach (var neighbour in nearestNeighbours) { var ids = dictionary[neighbour.Key].Keys.ToArray(); for (int i = 0; i < ids.Length; i++) { if (!uniqueItemIds.Contains(ids[i])) { uniqueItemIds.Add(ids[i]); } } } var bestRatings = new List <double>(); for (int i = 0; i < uniqueItemIds.Count; i++) { PredictedRatingCalculations predictedRatingCalculations = new PredictedRatingCalculations(); var predictedRating = predictedRatingCalculations.CalculatePredictedRating(uniqueItemIds[i], nearestNeighbours, dictionary); bestRatings.Add(predictedRating); } return(bestRatings.OrderByDescending(x => x).Take(amountOfRatings).ToArray()); }
private void Act() { // Act PredictedRatingCalculations predictedRatingCalculations = new PredictedRatingCalculations(); var result = predictedRatingCalculations.CalculatePredictedRating(3, _nearestNeigbours, _ratings); _result = Math.Round(result, 3); }