public PersonalizeViewModel()
        {
            RecommendedItems = new RecommendedItems();

            MoviesRatedByUser = new MoviesRatedByUser();

            MostPopularItems = new MostPopularItems();

            PersonalizedRankingResults = new PersonalizedRankingResults();

            SimilarItems = new SimilarItems();

            PersonalizedRankingResultsForRecommendations = new PersonalizedRankingResults();
        }
Esempio n. 2
0
        public List <RecommendedItems> RecommendNotPurchased(IList <SequenceSupport> sequenceSupports2Items, IList <UserSequence> userSequences, int recommendationNumber)
        {
            /*************************************************************************************/
            // Fill User Item Matrix based on support of each rule
            /*************************************************************************************/
            List <string>         preRule = sequenceSupports2Items.SelectMany(a => a.sequence[0]).ToList();
            List <UserItemRating> userItemRatingMatrix = new List <UserItemRating>();

            foreach (UserSequence userSequence in userSequences)
            {
                List <string> userPurchasedItems = userSequence.Sequence.SelectMany(a => a).Distinct().ToList();
                foreach (string item in userPurchasedItems)
                {
                    if (preRule.Contains(item))
                    {
                        IList <SequenceSupport> sequenceSupports = sequenceSupports2Items
                                                                   .Where(a => string.Equals(a.sequence[0][0], item)).ToList();
                        foreach (SequenceSupport sequenceSupport in sequenceSupports)
                        {
                            string descendantRule = sequenceSupport.sequence[1][0];
                            //select rules which user has not purchased the rule's descendant
                            if (!userPurchasedItems.Contains(descendantRule))
                            {
                                if (userItemRatingMatrix.Any(a =>
                                                             a.UserId == userSequence.User &&
                                                             a.ItemId == string.Copy(sequenceSupport.sequence[1][0])))
                                {
                                    userItemRatingMatrix.FirstOrDefault(a =>
                                                                        a.UserId == userSequence.User &&
                                                                        a.ItemId == string.Copy(sequenceSupport.sequence[1][0])).Rating +=
                                        sequenceSupport.support;
                                }
                                else
                                {
                                    UserItemRating userItemRating = new UserItemRating();
                                    userItemRating.UserId = userSequence.User;
                                    userItemRating.ItemId = string.Copy(sequenceSupport.sequence[1][0]);
                                    userItemRating.Rating = sequenceSupport.support;
                                    userItemRatingMatrix.Add(userItemRating);
                                }
                            }
                        }
                    }
                }
            }
            System.Diagnostics.Debug.WriteLine("Step 1: " + DateTime.Now.TimeOfDay + " - UserItemMatrix created");
            /*************************************************************************************/
            // Normalized UserItemRatingMatrix with unit vector method
            /*************************************************************************************/
            IEnumerable <int>     users = userItemRatingMatrix.Select(a => a.UserId).Distinct();
            List <UserItemRating> userItemRatingMatrixNormalized = new List <UserItemRating>();
            List <UserVector>     userVectors = new List <UserVector>();

            //Find average rating of each user
            foreach (int user1 in users)
            {
                UserVector userVector = new UserVector()
                {
                };
                userVector.User = user1;
                IEnumerable <float> ratings = userItemRatingMatrix.Where(a => a.UserId == user1).Select(a => a.Rating);
                float ratingsPower2         = 0;
                foreach (float rating in ratings)
                {
                    ratingsPower2 += (float)Math.Pow(rating, 2.0);
                }
                userVector.Vector = (float)Math.Sqrt(ratingsPower2);
                userVectors.Add(userVector);
            }
            //fillup adjusted UserItem matrix
            foreach (UserItemRating userItemRating in userItemRatingMatrix)
            {
                float          NormalziedRating       = userItemRating.Rating / userVectors.Where(a => a.User == userItemRating.UserId).First().Vector;
                UserItemRating userItemRatingAdjusted = new UserItemRating(userItemRating.UserId, userItemRating.ItemId, NormalziedRating);
                userItemRatingMatrixNormalized.Add(userItemRatingAdjusted);
            }
            System.Diagnostics.Debug.WriteLine("Step 2: " + DateTime.Now.TimeOfDay + " - UserItemMatrix normalized");
            /*************************************************************************************/
            //  Step 5:   Recommend products
            /*************************************************************************************/
            List <RecommendedItems> recomendations = new List <RecommendedItems>()
            {
            };

            foreach (int user in users)
            {
                RecommendedItems recomendation = new RecommendedItems()
                {
                };
                recomendation.User  = user;
                recomendation.Items = new List <ItemRating>();
                IEnumerable <UserItemRating> userItemRatings = userItemRatingMatrixNormalized.Where(a => a.UserId == user).OrderByDescending(a => a.Rating);

                for (int i = 0; i < recommendationNumber; i++)
                {
                    UserItemRating userItemRating = userItemRatings.Skip(i).FirstOrDefault();
                    if (userItemRating != null)
                    {
                        ItemRating itemRating = new ItemRating(userItemRating.ItemId, userItemRating.Rating);
                        recomendation.Items.Add(itemRating);
                    }
                    else
                    {
                        break;
                    }
                }
                recomendations.Add(recomendation);
            }
            Console.WriteLine("Step 3: " + DateTime.Now.TimeOfDay + " - Recommend products");
            return(recomendations);
        }
        //[ValidateAntiForgeryToken]
        public IActionResult Recommendations(int recommendationNumber, int cfWeight, int spmWeight)
        {
            int recInfoid = _dbContext.RecommendationInfo.First(a => string.Equals(a.RecName, "Spm11Month")).RecId;
            IList <Recommendation> recommendationsSpm = _dbContext.Recommendation
                                                        .Where(a => a.RecommendationInfoId == recInfoid).ToList();

            recInfoid = _dbContext.RecommendationInfo.First(a => string.Equals(a.RecName, "Cf11Month")).RecId;
            IList <Recommendation> recommendationsCf = _dbContext.Recommendation
                                                       .Where(a => a.RecommendationInfoId == recInfoid).ToList();
            /*************************************************************************************/
            // Fill User Item Matrix based on support of each rule
            /*************************************************************************************/
            IList <RecommendedItems> RecommendeditemsCf = new List <RecommendedItems>();

            foreach (var a in recommendationsCf)
            {
                RecommendedItems recommendedItems = new RecommendedItems();
                recommendedItems.User  = a.UserId;
                recommendedItems.Items = new List <ItemRating>();
                if (a.Item1 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item1, (float)a.Rating1.GetValueOrDefault()));
                }
                if (a.Item2 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item2, (float)a.Rating2.GetValueOrDefault()));
                }
                if (a.Item3 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item3, (float)a.Rating3.GetValueOrDefault()));
                }
                if (a.Item4 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item4, (float)a.Rating4.GetValueOrDefault()));
                }
                if (a.Item5 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item5, (float)a.Rating5.GetValueOrDefault()));
                }
                if (a.Item6 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item6, (float)a.Rating6.GetValueOrDefault()));
                }
                if (a.Item7 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item7, (float)a.Rating7.GetValueOrDefault()));
                }
                if (a.Item8 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item8, (float)a.Rating8.GetValueOrDefault()));
                }
                if (a.Item9 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item9, (float)a.Rating9.GetValueOrDefault()));
                }
                if (a.Item10 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item10, (float)a.Rating10.GetValueOrDefault()));
                }
                if (a.Item11 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item11, (float)a.Rating11.GetValueOrDefault()));
                }
                if (a.Item12 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item12, (float)a.Rating12.GetValueOrDefault()));
                }
                if (a.Item13 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item13, (float)a.Rating13.GetValueOrDefault()));
                }
                if (a.Item14 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item14, (float)a.Rating14.GetValueOrDefault()));
                }
                if (a.Item15 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item15, (float)a.Rating15.GetValueOrDefault()));
                }
                if (a.Item16 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item16, (float)a.Rating16.GetValueOrDefault()));
                }
                if (a.Item17 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item17, (float)a.Rating17.GetValueOrDefault()));
                }
                if (a.Item18 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item18, (float)a.Rating18.GetValueOrDefault()));
                }
                if (a.Item19 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item19, (float)a.Rating19.GetValueOrDefault()));
                }
                if (a.Item20 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item20, (float)a.Rating20.GetValueOrDefault()));
                }
                if (a.Item21 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item21, (float)a.Rating21.GetValueOrDefault()));
                }
                if (a.Item22 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item22, (float)a.Rating22.GetValueOrDefault()));
                }
                if (a.Item23 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item23, (float)a.Rating23.GetValueOrDefault()));
                }
                if (a.Item24 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item24, (float)a.Rating24.GetValueOrDefault()));
                }
                if (a.Item25 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item25, (float)a.Rating25.GetValueOrDefault()));
                }
                if (a.Item26 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item26, (float)a.Rating26.GetValueOrDefault()));
                }
                if (a.Item27 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item27, (float)a.Rating27.GetValueOrDefault()));
                }
                if (a.Item28 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item28, (float)a.Rating28.GetValueOrDefault()));
                }
                if (a.Item29 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item29, (float)a.Rating29.GetValueOrDefault()));
                }
                if (a.Item30 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item30, (float)a.Rating30.GetValueOrDefault()));
                }
                if (a.Item31 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item31, (float)a.Rating31.GetValueOrDefault()));
                }
                if (a.Item32 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item32, (float)a.Rating32.GetValueOrDefault()));
                }
                if (a.Item33 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item33, (float)a.Rating33.GetValueOrDefault()));
                }
                if (a.Item34 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item34, (float)a.Rating34.GetValueOrDefault()));
                }
                if (a.Item35 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item35, (float)a.Rating35.GetValueOrDefault()));
                }
                if (a.Item36 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item36, (float)a.Rating36.GetValueOrDefault()));
                }
                if (a.Item37 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item37, (float)a.Rating37.GetValueOrDefault()));
                }
                if (a.Item38 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item38, (float)a.Rating38.GetValueOrDefault()));
                }
                if (a.Item39 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item39, (float)a.Rating39.GetValueOrDefault()));
                }
                if (a.Item40 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item40, (float)a.Rating40.GetValueOrDefault()));
                }
                if (a.Item41 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item41, (float)a.Rating41.GetValueOrDefault()));
                }
                if (a.Item42 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item42, (float)a.Rating42.GetValueOrDefault()));
                }
                if (a.Item43 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item43, (float)a.Rating43.GetValueOrDefault()));
                }
                if (a.Item44 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item44, (float)a.Rating44.GetValueOrDefault()));
                }
                if (a.Item45 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item45, (float)a.Rating45.GetValueOrDefault()));
                }
                if (a.Item46 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item46, (float)a.Rating46.GetValueOrDefault()));
                }
                if (a.Item47 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item47, (float)a.Rating47.GetValueOrDefault()));
                }
                if (a.Item48 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item48, (float)a.Rating48.GetValueOrDefault()));
                }
                if (a.Item49 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item49, (float)a.Rating49.GetValueOrDefault()));
                }
                if (a.Item50 != null)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item50, (float)a.Rating50.GetValueOrDefault()));
                }
                RecommendeditemsCf.Add(recommendedItems);
            }


            IList <RecommendedItems> recommendedItemsSpm = new List <RecommendedItems>();

            foreach (var a in recommendationsSpm)
            {
                RecommendedItems recommendedItems = new RecommendedItems();
                recommendedItems.User  = a.UserId;
                recommendedItems.Items = new List <ItemRating>();
                if (a.Item1 != null && a.Item1 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item1, (float)a.Rating1.GetValueOrDefault()));
                }
                if (a.Item2 != null && a.Item2 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item2, (float)a.Rating2.GetValueOrDefault()));
                }
                if (a.Item3 != null && a.Item3 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item3, (float)a.Rating3.GetValueOrDefault()));
                }
                if (a.Item4 != null && a.Item4 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item4, (float)a.Rating4.GetValueOrDefault()));
                }
                if (a.Item5 != null && a.Item5 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item5, (float)a.Rating5.GetValueOrDefault()));
                }
                if (a.Item6 != null && a.Item6 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item6, (float)a.Rating6.GetValueOrDefault()));
                }
                if (a.Item7 != null && a.Item7 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item7, (float)a.Rating7.GetValueOrDefault()));
                }
                if (a.Item8 != null && a.Item8 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item8, (float)a.Rating8.GetValueOrDefault()));
                }
                if (a.Item9 != null && a.Item9 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item9, (float)a.Rating9.GetValueOrDefault()));
                }
                if (a.Item10 != null && a.Item10 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item10, (float)a.Rating10.GetValueOrDefault()));
                }
                if (a.Item11 != null && a.Item11 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item11, (float)a.Rating11.GetValueOrDefault()));
                }
                if (a.Item12 != null && a.Item12 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item12, (float)a.Rating12.GetValueOrDefault()));
                }
                if (a.Item13 != null && a.Item13 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item13, (float)a.Rating13.GetValueOrDefault()));
                }
                if (a.Item14 != null && a.Item14 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item14, (float)a.Rating14.GetValueOrDefault()));
                }
                if (a.Item15 != null && a.Item15 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item15, (float)a.Rating15.GetValueOrDefault()));
                }
                if (a.Item16 != null && a.Item16 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item16, (float)a.Rating16.GetValueOrDefault()));
                }
                if (a.Item17 != null && a.Item17 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item17, (float)a.Rating17.GetValueOrDefault()));
                }
                if (a.Item18 != null && a.Item18 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item18, (float)a.Rating18.GetValueOrDefault()));
                }
                if (a.Item19 != null && a.Item19 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item19, (float)a.Rating19.GetValueOrDefault()));
                }
                if (a.Item20 != null && a.Item20 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item20, (float)a.Rating20.GetValueOrDefault()));
                }
                if (a.Item21 != null && a.Item21 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item21, (float)a.Rating21.GetValueOrDefault()));
                }
                if (a.Item22 != null && a.Item22 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item22, (float)a.Rating22.GetValueOrDefault()));
                }
                if (a.Item23 != null && a.Item23 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item23, (float)a.Rating23.GetValueOrDefault()));
                }
                if (a.Item24 != null && a.Item24 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item24, (float)a.Rating24.GetValueOrDefault()));
                }
                if (a.Item25 != null && a.Item25 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item25, (float)a.Rating25.GetValueOrDefault()));
                }
                if (a.Item26 != null && a.Item26 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item26, (float)a.Rating26.GetValueOrDefault()));
                }
                if (a.Item27 != null && a.Item27 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item27, (float)a.Rating27.GetValueOrDefault()));
                }
                if (a.Item28 != null && a.Item28 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item28, (float)a.Rating28.GetValueOrDefault()));
                }
                if (a.Item29 != null && a.Item29 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item29, (float)a.Rating29.GetValueOrDefault()));
                }
                if (a.Item30 != null && a.Item30 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item30, (float)a.Rating30.GetValueOrDefault()));
                }
                if (a.Item31 != null && a.Item31 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item31, (float)a.Rating31.GetValueOrDefault()));
                }
                if (a.Item32 != null && a.Item32 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item32, (float)a.Rating32.GetValueOrDefault()));
                }
                if (a.Item33 != null && a.Item33 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item33, (float)a.Rating33.GetValueOrDefault()));
                }
                if (a.Item34 != null && a.Item34 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item34, (float)a.Rating34.GetValueOrDefault()));
                }
                if (a.Item35 != null && a.Item35 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item35, (float)a.Rating35.GetValueOrDefault()));
                }
                if (a.Item36 != null && a.Item36 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item36, (float)a.Rating36.GetValueOrDefault()));
                }
                if (a.Item37 != null && a.Item37 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item37, (float)a.Rating37.GetValueOrDefault()));
                }
                if (a.Item38 != null && a.Item38 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item38, (float)a.Rating38.GetValueOrDefault()));
                }
                if (a.Item39 != null && a.Item39 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item39, (float)a.Rating39.GetValueOrDefault()));
                }
                if (a.Item40 != null && a.Item40 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item40, (float)a.Rating40.GetValueOrDefault()));
                }
                if (a.Item41 != null && a.Item41 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item41, (float)a.Rating41.GetValueOrDefault()));
                }
                if (a.Item42 != null && a.Item42 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item42, (float)a.Rating42.GetValueOrDefault()));
                }
                if (a.Item43 != null && a.Item43 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item43, (float)a.Rating43.GetValueOrDefault()));
                }
                if (a.Item44 != null && a.Item44 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item44, (float)a.Rating44.GetValueOrDefault()));
                }
                if (a.Item45 != null && a.Item45 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item45, (float)a.Rating45.GetValueOrDefault()));
                }
                if (a.Item46 != null && a.Item46 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item46, (float)a.Rating46.GetValueOrDefault()));
                }
                if (a.Item47 != null && a.Item47 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item47, (float)a.Rating47.GetValueOrDefault()));
                }
                if (a.Item48 != null && a.Item48 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item48, (float)a.Rating48.GetValueOrDefault()));
                }
                if (a.Item49 != null && a.Item49 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item49, (float)a.Rating49.GetValueOrDefault()));
                }
                if (a.Item50 != null && a.Item50 != string.Empty)
                {
                    recommendedItems.Items.Add(new ItemRating(a.Item50, (float)a.Rating50.GetValueOrDefault()));
                }
                recommendedItemsSpm.Add(recommendedItems);
            }

            EnsembleRecommendationService ensembleRecommendation = new EnsembleRecommendationService();
            List <RecommendedItems>       recommendedItemsList   = ensembleRecommendation.RecommendOptimizedHope(
                RecommendeditemsCf,
                recommendedItemsSpm,
                (float)cfWeight / 100,
                (float)spmWeight / 100,
                recommendationNumber);

            SavetoDatabase(recommendedItemsList);

            return(View(recommendedItemsList));
        }