예제 #1
0
        private AccuracyNrec CalculateAccuracy(List <RecommendedItems> recommendations, IList <UserItemPurchase> purchases)
        {
            IList <UserItemlist> recommendations5 = recommendations
                                                    .Select(a => new UserItemlist
            {
                UserId = a.User,
                Items  = a.Items.OrderByDescending(b => b.Rating).Take(5).Select(c => c.ItemId).ToList()
            }).ToList();

            IList <UserItemlist> recommendations10 = recommendations
                                                     .Select(a => new UserItemlist
            {
                UserId = a.User,
                Items  = a.Items.OrderByDescending(b => b.Rating).Take(10).Select(c => c.ItemId).ToList()
            }).ToList();

            IList <UserItemlist> recommendations20 = recommendations
                                                     .Select(a => new UserItemlist
            {
                UserId = a.User,
                Items  = a.Items.OrderByDescending(b => b.Rating).Take(20).Select(c => c.ItemId).ToList()
            }).ToList();

            IList <UserItemlist> recommendations50 = recommendations
                                                     .Select(a => new UserItemlist
            {
                UserId = a.User,
                Items  = a.Items.OrderByDescending(b => b.Rating).Take(50).Select(c => c.ItemId).ToList()
            }).ToList();

            AccuracyNrec  accuracyNrec  = new AccuracyNrec();
            RecEvaluation recEvaluation = new RecEvaluation();

            accuracyNrec.Precicion5           = recEvaluation.Precision(recommendations5, purchases);
            accuracyNrec.Recall5              = recEvaluation.Recall(recommendations5, purchases);
            accuracyNrec.F15                  = recEvaluation.F1(accuracyNrec.Precicion5, accuracyNrec.Recall5);
            accuracyNrec.RecallwithFrequency5 = recEvaluation.RecallWithFrequency(recommendations5, purchases);
            accuracyNrec.F1withFrequency5     = recEvaluation.F1(accuracyNrec.Precicion5, accuracyNrec.RecallwithFrequency5);

            accuracyNrec.Precicion10           = recEvaluation.Precision(recommendations10, purchases);
            accuracyNrec.Recall10              = recEvaluation.Recall(recommendations10, purchases);
            accuracyNrec.F110                  = recEvaluation.F1(accuracyNrec.Precicion10, accuracyNrec.Recall10);
            accuracyNrec.RecallwithFrequency10 = recEvaluation.RecallWithFrequency(recommendations10, purchases);
            accuracyNrec.F1withFrequency10     = recEvaluation.F1(accuracyNrec.Precicion10, accuracyNrec.RecallwithFrequency10);

            accuracyNrec.Precicion20           = recEvaluation.Precision(recommendations20, purchases);
            accuracyNrec.Recall20              = recEvaluation.Recall(recommendations20, purchases);
            accuracyNrec.F120                  = recEvaluation.F1(accuracyNrec.Precicion20, accuracyNrec.Recall20);
            accuracyNrec.RecallwithFrequency20 = recEvaluation.RecallWithFrequency(recommendations20, purchases);
            accuracyNrec.F1withFrequency20     = recEvaluation.F1(accuracyNrec.Precicion20, accuracyNrec.RecallwithFrequency20);

            accuracyNrec.Precicion50           = recEvaluation.Precision(recommendations50, purchases);
            accuracyNrec.Recall50              = recEvaluation.Recall(recommendations50, purchases);
            accuracyNrec.F150                  = recEvaluation.F1(accuracyNrec.Precicion50, accuracyNrec.Recall50);
            accuracyNrec.RecallwithFrequency50 = recEvaluation.RecallWithFrequency(recommendations50, purchases);
            accuracyNrec.F1withFrequency50     = recEvaluation.F1(accuracyNrec.Precicion50, accuracyNrec.RecallwithFrequency50);

            return(accuracyNrec);
        }
        public IActionResult EvaluationResults(int recommendationNumber, DateTime trainStartDate, DateTime trainEndDate, DateTime testStartDate, DateTime testEndDate)
        {
            string recType   = "PurchaseFrequency11Month";
            int    recInfoid = _dbContext.RecommendationInfo.First(a => string.Equals(a.RecName, recType)).RecId;

            IQueryable <UkRetailOriginalSales> ukRetailOriginalSales = _dbContext.UkRetailOriginalSales;
            IQueryable <Recommendation>        recommendations       = _dbContext.Recommendation.
                                                                       Where(a => a.RecommendationInfoId == recInfoid);

            RecEvaluation recEvaluation = new RecEvaluation();
            AccuracyNrec  accuracyNrec  = recEvaluation.RecEvaluate(ukRetailOriginalSales, recommendations, recType, trainStartDate, trainEndDate, testStartDate, testEndDate);

            return(View(accuracyNrec));
        }
        public AccuracyNrec RecEvaluate(IQueryable <UkRetailOriginalSales> ukRetailOriginalSales, IQueryable <Recommendation> recommendationsAll, string recType, DateTime trainStartDate, DateTime trainEndDate, DateTime testStartDate, DateTime testEndDate)
        {
            //Select purchases in test period
            IList <UserItemPurchase> purchasesAllTest = ukRetailOriginalSales
                                                        .Where(a => a.InvoiceDate.Date >= testStartDate.Date && a.InvoiceDate.Date <= testEndDate.Date &&
                                                               a.CustomerID != null && a.CustomerID < 13000 && a.Quantity > 0 &&
                                                               string.Compare(a.StockCode, "a") == -1)
                                                        .Select(a => new UserItemPurchase {
                User = (Int32)a.CustomerID, Item = a.StockCode
            }).ToList();

            //Select purchases in train period
            IList <int> purchasesAllTrain = ukRetailOriginalSales
                                            .Where(a => a.InvoiceDate.Date >= trainStartDate.Date && a.InvoiceDate.Date <= trainEndDate.Date &&
                                                   a.CustomerID != null && a.CustomerID < 13000 && a.Quantity > 0 &&
                                                   string.Compare(a.StockCode, "a") == -1).Select(a => (Int32)a.CustomerID).Distinct().ToList();

            //Select users which the user bought something both in test period and train priod
            List <int> purchaseUsers = purchasesAllTest.Select(a => a.User).Where(a => purchasesAllTrain.Contains(a)).Distinct().ToList();
            //Select purchass where user has bought something both in training and testing
            IList <UserItemPurchase> purchase = purchasesAllTest.Where(a => purchaseUsers.Contains(a.User)).ToList();

            IList <Recommendation> recommendations = recommendationsAll
                                                     .Where(a => purchaseUsers.Contains(a.UserId)).ToList();

            IList <UserItemlist> recommendations5 = new List <UserItemlist>();

            foreach (Recommendation recommendation in recommendations)
            {
                UserItemlist userItemlist = new UserItemlist();
                userItemlist.UserId = recommendation.UserId;
                userItemlist.Items  = new List <string>();
                if (recommendation.Item1 != null)
                {
                    userItemlist.Items.Add(recommendation.Item1);
                }
                if (recommendation.Item2 != null)
                {
                    userItemlist.Items.Add(recommendation.Item2);
                }
                if (recommendation.Item3 != null)
                {
                    userItemlist.Items.Add(recommendation.Item3);
                }
                if (recommendation.Item4 != null)
                {
                    userItemlist.Items.Add(recommendation.Item4);
                }
                if (recommendation.Item5 != null)
                {
                    userItemlist.Items.Add(recommendation.Item5);
                }
                recommendations5.Add(userItemlist);
            }

            IList <UserItemlist> recommendations10 = new List <UserItemlist>();

            foreach (Recommendation recommendation in recommendations)
            {
                UserItemlist userItemlist = new UserItemlist();
                userItemlist.UserId = recommendation.UserId;
                userItemlist.Items  = new List <string>();
                if (recommendation.Item1 != null)
                {
                    userItemlist.Items.Add(recommendation.Item1);
                }
                if (recommendation.Item2 != null)
                {
                    userItemlist.Items.Add(recommendation.Item2);
                }
                if (recommendation.Item3 != null)
                {
                    userItemlist.Items.Add(recommendation.Item3);
                }
                if (recommendation.Item4 != null)
                {
                    userItemlist.Items.Add(recommendation.Item4);
                }
                if (recommendation.Item5 != null)
                {
                    userItemlist.Items.Add(recommendation.Item5);
                }
                if (recommendation.Item6 != null)
                {
                    userItemlist.Items.Add(recommendation.Item6);
                }
                if (recommendation.Item7 != null)
                {
                    userItemlist.Items.Add(recommendation.Item7);
                }
                if (recommendation.Item8 != null)
                {
                    userItemlist.Items.Add(recommendation.Item8);
                }
                if (recommendation.Item9 != null)
                {
                    userItemlist.Items.Add(recommendation.Item9);
                }
                if (recommendation.Item10 != null)
                {
                    userItemlist.Items.Add(recommendation.Item10);
                }
                recommendations10.Add(userItemlist);
            }

            IList <UserItemlist> recommendations20 = new List <UserItemlist>();

            foreach (Recommendation recommendation in recommendations)
            {
                UserItemlist userItemlist = new UserItemlist();
                userItemlist.UserId = recommendation.UserId;
                userItemlist.Items  = new List <string>();
                if (recommendation.Item1 != null)
                {
                    userItemlist.Items.Add(recommendation.Item1);
                }
                if (recommendation.Item2 != null)
                {
                    userItemlist.Items.Add(recommendation.Item2);
                }
                if (recommendation.Item3 != null)
                {
                    userItemlist.Items.Add(recommendation.Item3);
                }
                if (recommendation.Item4 != null)
                {
                    userItemlist.Items.Add(recommendation.Item4);
                }
                if (recommendation.Item5 != null)
                {
                    userItemlist.Items.Add(recommendation.Item5);
                }
                if (recommendation.Item6 != null)
                {
                    userItemlist.Items.Add(recommendation.Item6);
                }
                if (recommendation.Item7 != null)
                {
                    userItemlist.Items.Add(recommendation.Item7);
                }
                if (recommendation.Item8 != null)
                {
                    userItemlist.Items.Add(recommendation.Item8);
                }
                if (recommendation.Item9 != null)
                {
                    userItemlist.Items.Add(recommendation.Item9);
                }
                if (recommendation.Item10 != null)
                {
                    userItemlist.Items.Add(recommendation.Item10);
                }
                if (recommendation.Item11 != null)
                {
                    userItemlist.Items.Add(recommendation.Item11);
                }
                if (recommendation.Item12 != null)
                {
                    userItemlist.Items.Add(recommendation.Item12);
                }
                if (recommendation.Item13 != null)
                {
                    userItemlist.Items.Add(recommendation.Item13);
                }
                if (recommendation.Item14 != null)
                {
                    userItemlist.Items.Add(recommendation.Item14);
                }
                if (recommendation.Item15 != null)
                {
                    userItemlist.Items.Add(recommendation.Item15);
                }
                if (recommendation.Item16 != null)
                {
                    userItemlist.Items.Add(recommendation.Item16);
                }
                if (recommendation.Item17 != null)
                {
                    userItemlist.Items.Add(recommendation.Item17);
                }
                if (recommendation.Item18 != null)
                {
                    userItemlist.Items.Add(recommendation.Item18);
                }
                if (recommendation.Item19 != null)
                {
                    userItemlist.Items.Add(recommendation.Item19);
                }
                if (recommendation.Item20 != null)
                {
                    userItemlist.Items.Add(recommendation.Item20);
                }
                recommendations20.Add(userItemlist);
            }

            IList <UserItemlist> recommendations50 = new List <UserItemlist>();

            foreach (Recommendation recommendation in recommendations)
            {
                UserItemlist userItemlist = new UserItemlist();
                userItemlist.UserId = recommendation.UserId;
                userItemlist.Items  = new List <string>();
                if (recommendation.Item1 != null)
                {
                    userItemlist.Items.Add(recommendation.Item1);
                }
                if (recommendation.Item2 != null)
                {
                    userItemlist.Items.Add(recommendation.Item2);
                }
                if (recommendation.Item3 != null)
                {
                    userItemlist.Items.Add(recommendation.Item3);
                }
                if (recommendation.Item4 != null)
                {
                    userItemlist.Items.Add(recommendation.Item4);
                }
                if (recommendation.Item5 != null)
                {
                    userItemlist.Items.Add(recommendation.Item5);
                }
                if (recommendation.Item6 != null)
                {
                    userItemlist.Items.Add(recommendation.Item6);
                }
                if (recommendation.Item7 != null)
                {
                    userItemlist.Items.Add(recommendation.Item7);
                }
                if (recommendation.Item8 != null)
                {
                    userItemlist.Items.Add(recommendation.Item8);
                }
                if (recommendation.Item9 != null)
                {
                    userItemlist.Items.Add(recommendation.Item9);
                }
                if (recommendation.Item10 != null)
                {
                    userItemlist.Items.Add(recommendation.Item10);
                }
                if (recommendation.Item11 != null)
                {
                    userItemlist.Items.Add(recommendation.Item11);
                }
                if (recommendation.Item12 != null)
                {
                    userItemlist.Items.Add(recommendation.Item12);
                }
                if (recommendation.Item13 != null)
                {
                    userItemlist.Items.Add(recommendation.Item13);
                }
                if (recommendation.Item14 != null)
                {
                    userItemlist.Items.Add(recommendation.Item14);
                }
                if (recommendation.Item15 != null)
                {
                    userItemlist.Items.Add(recommendation.Item15);
                }
                if (recommendation.Item16 != null)
                {
                    userItemlist.Items.Add(recommendation.Item16);
                }
                if (recommendation.Item17 != null)
                {
                    userItemlist.Items.Add(recommendation.Item17);
                }
                if (recommendation.Item18 != null)
                {
                    userItemlist.Items.Add(recommendation.Item18);
                }
                if (recommendation.Item19 != null)
                {
                    userItemlist.Items.Add(recommendation.Item19);
                }
                if (recommendation.Item20 != null)
                {
                    userItemlist.Items.Add(recommendation.Item20);
                }
                if (recommendation.Item21 != null)
                {
                    userItemlist.Items.Add(recommendation.Item21);
                }
                if (recommendation.Item22 != null)
                {
                    userItemlist.Items.Add(recommendation.Item22);
                }
                if (recommendation.Item23 != null)
                {
                    userItemlist.Items.Add(recommendation.Item23);
                }
                if (recommendation.Item24 != null)
                {
                    userItemlist.Items.Add(recommendation.Item24);
                }
                if (recommendation.Item25 != null)
                {
                    userItemlist.Items.Add(recommendation.Item25);
                }
                if (recommendation.Item26 != null)
                {
                    userItemlist.Items.Add(recommendation.Item26);
                }
                if (recommendation.Item27 != null)
                {
                    userItemlist.Items.Add(recommendation.Item27);
                }
                if (recommendation.Item28 != null)
                {
                    userItemlist.Items.Add(recommendation.Item28);
                }
                if (recommendation.Item29 != null)
                {
                    userItemlist.Items.Add(recommendation.Item29);
                }
                if (recommendation.Item30 != null)
                {
                    userItemlist.Items.Add(recommendation.Item30);
                }
                if (recommendation.Item31 != null)
                {
                    userItemlist.Items.Add(recommendation.Item31);
                }
                if (recommendation.Item32 != null)
                {
                    userItemlist.Items.Add(recommendation.Item32);
                }
                if (recommendation.Item33 != null)
                {
                    userItemlist.Items.Add(recommendation.Item33);
                }
                if (recommendation.Item34 != null)
                {
                    userItemlist.Items.Add(recommendation.Item34);
                }
                if (recommendation.Item35 != null)
                {
                    userItemlist.Items.Add(recommendation.Item35);
                }
                if (recommendation.Item36 != null)
                {
                    userItemlist.Items.Add(recommendation.Item36);
                }
                if (recommendation.Item37 != null)
                {
                    userItemlist.Items.Add(recommendation.Item37);
                }
                if (recommendation.Item38 != null)
                {
                    userItemlist.Items.Add(recommendation.Item38);
                }
                if (recommendation.Item39 != null)
                {
                    userItemlist.Items.Add(recommendation.Item39);
                }
                if (recommendation.Item40 != null)
                {
                    userItemlist.Items.Add(recommendation.Item40);
                }
                if (recommendation.Item41 != null)
                {
                    userItemlist.Items.Add(recommendation.Item41);
                }
                if (recommendation.Item42 != null)
                {
                    userItemlist.Items.Add(recommendation.Item42);
                }
                if (recommendation.Item43 != null)
                {
                    userItemlist.Items.Add(recommendation.Item43);
                }
                if (recommendation.Item44 != null)
                {
                    userItemlist.Items.Add(recommendation.Item44);
                }
                if (recommendation.Item45 != null)
                {
                    userItemlist.Items.Add(recommendation.Item45);
                }
                if (recommendation.Item46 != null)
                {
                    userItemlist.Items.Add(recommendation.Item46);
                }
                if (recommendation.Item47 != null)
                {
                    userItemlist.Items.Add(recommendation.Item47);
                }
                if (recommendation.Item48 != null)
                {
                    userItemlist.Items.Add(recommendation.Item48);
                }
                if (recommendation.Item49 != null)
                {
                    userItemlist.Items.Add(recommendation.Item49);
                }
                if (recommendation.Item50 != null)
                {
                    userItemlist.Items.Add(recommendation.Item50);
                }
                recommendations50.Add(userItemlist);
            }


            AccuracyNrec  accuracyNrec  = new AccuracyNrec();
            RecEvaluation recEvaluation = new RecEvaluation();

            accuracyNrec.Precicion5           = recEvaluation.Precision(recommendations5, purchase);
            accuracyNrec.Recall5              = recEvaluation.Recall(recommendations5, purchase);
            accuracyNrec.F15                  = recEvaluation.F1(accuracyNrec.Precicion5, accuracyNrec.Recall5);
            accuracyNrec.RecallwithFrequency5 = recEvaluation.RecallWithFrequency(recommendations5, purchase);
            accuracyNrec.F1withFrequency5     = recEvaluation.F1(accuracyNrec.Precicion5, accuracyNrec.RecallwithFrequency5);

            accuracyNrec.Precicion10           = recEvaluation.Precision(recommendations10, purchase);
            accuracyNrec.Recall10              = recEvaluation.Recall(recommendations10, purchase);
            accuracyNrec.F110                  = recEvaluation.F1(accuracyNrec.Precicion10, accuracyNrec.Recall10);
            accuracyNrec.RecallwithFrequency10 = recEvaluation.RecallWithFrequency(recommendations10, purchase);
            accuracyNrec.F1withFrequency10     = recEvaluation.F1(accuracyNrec.Precicion10, accuracyNrec.RecallwithFrequency10);

            accuracyNrec.Precicion20           = recEvaluation.Precision(recommendations20, purchase);
            accuracyNrec.Recall20              = recEvaluation.Recall(recommendations20, purchase);
            accuracyNrec.F120                  = recEvaluation.F1(accuracyNrec.Precicion20, accuracyNrec.Recall20);
            accuracyNrec.RecallwithFrequency20 = recEvaluation.RecallWithFrequency(recommendations20, purchase);
            accuracyNrec.F1withFrequency20     = recEvaluation.F1(accuracyNrec.Precicion20, accuracyNrec.RecallwithFrequency20);

            accuracyNrec.Precicion50           = recEvaluation.Precision(recommendations50, purchase);
            accuracyNrec.Recall50              = recEvaluation.Recall(recommendations50, purchase);
            accuracyNrec.F150                  = recEvaluation.F1(accuracyNrec.Precicion50, accuracyNrec.Recall50);
            accuracyNrec.RecallwithFrequency50 = recEvaluation.RecallWithFrequency(recommendations50, purchase);
            accuracyNrec.F1withFrequency50     = recEvaluation.F1(accuracyNrec.Precicion50, accuracyNrec.RecallwithFrequency50);

            return(accuracyNrec);
        }
예제 #4
0
        //[ValidateAntiForgeryToken]
        public IActionResult OptimumSupportConfidence(float supportFrom, float supportTo, float supportSteps,
                                                      float confidenceFrom, float confidenceTo, float confidenceSteps,
                                                      DateTime trainStartDate, DateTime trainEndDate, DateTime testStartDate, DateTime testEndDate)
        {
            List <SupportConfidenceAccuracyNrec> SupportConfidenceAccuracyNrecs = new List <SupportConfidenceAccuracyNrec>();
            //Select purchases in test period
            IList <UserItemPurchase> purchasesAllTest = _dbContext.UkRetailOriginalSales
                                                        .Where(a => a.InvoiceDate.Date >= testStartDate.Date && a.InvoiceDate.Date <= testEndDate.Date &&
                                                               a.CustomerID != null && a.CustomerID < 13000 && a.Quantity > 0 &&
                                                               string.Compare(a.StockCode, "a") == -1)
                                                        .Select(a => new UserItemPurchase {
                User = (Int32)a.CustomerID, Item = a.StockCode
            }).ToList();
            //Select purchases in train period
            IList <int> purchasesAllTrain = _dbContext.UkRetailOriginalSales
                                            .Where(a => a.InvoiceDate.Date >= trainStartDate.Date && a.InvoiceDate.Date <= trainEndDate.Date &&
                                                   a.CustomerID != null && a.CustomerID < 13000 && a.Quantity > 0 &&
                                                   string.Compare(a.StockCode, "a") == -1).Select(a => (Int32)a.CustomerID).Distinct().ToList();
            //Select users which the user bought something both in test period and train priod
            List <int> purchaseUsers = purchasesAllTest.Select(a => a.User).Where(a => purchasesAllTrain.Contains(a)).Distinct().ToList();
            //Select purchass where user has bought something both in training and testing
            IList <UserItemPurchase> purchases = purchasesAllTest.Where(a => purchaseUsers.Contains(a.User)).ToList();



            IEnumerable <SequenceSupport> sequenceSupports = ReadFrequentSequences();
            //List<FrequentSequentialRule> frequentSequentialRules = FindFrequentSequentialRules(sequenceSupports);
            List <UserSequence> userSequences = CreateUserSequences(trainStartDate, trainEndDate);
            int userCount = userSequences.Count();


            //Parallel.ForEach(counter, new ParallelOptions { MaxDegreeOfParallelism = Environment.ProcessorCount - 1 }, supportPercentage =>
            for (float supportPercentage = supportFrom; supportPercentage <= supportTo; supportPercentage += supportSteps)
            {
                var counter = new List <float>();
                for (float i = confidenceFrom; i <= confidenceTo; i += confidenceSteps)
                {
                    counter.Add(i);
                }
                Parallel.ForEach(counter, new ParallelOptions {
                    MaxDegreeOfParallelism = Environment.ProcessorCount
                }, confidence =>
                                 //for (float confidence = confidenceFrom; confidence <= confidenceTo; confidence += confidenceSteps)
                {
                    //=========================================================
                    //Recommend Items
                    //=========================================================
                    int support = Convert.ToInt32(Math.Floor((supportPercentage / 100) * userCount));
                    IList <SequenceSupport> sequenceSupports2Items = sequenceSupports.
                                                                     Where(a => a.sequence.Count == 2 && a.sequence[0].Count == 1 && a.sequence[1].Count == 1 && a.support >= support).ToList();
                    IList <SequenceSupport> sequenceSupports1Items = sequenceSupports.
                                                                     Where(a => a.sequence.Count == 1 && a.sequence[0].Count == 1 && a.support >= support).ToList();
                    IList <SequenceSupport> sequenceSupports2ItemsRules = new List <SequenceSupport>();
                    foreach (SequenceSupport sequenceSupport in sequenceSupports2Items)
                    {
                        int ancestorSupport = sequenceSupports1Items.Single(a => a.sequence[0][0] == sequenceSupport.sequence[0][0]).support;
                        if (((float)sequenceSupport.support / (float)ancestorSupport) >= ((float)confidence / 100.0))
                        {
                            sequenceSupports2ItemsRules.Add(sequenceSupport);
                        }
                    }

                    SpmRecommendation sequentialRecommendation   = new SpmRecommendation();
                    List <RecommendedItems> recommendedItemsList = sequentialRecommendation.Recommend(sequenceSupports2ItemsRules, userSequences, 50);
                    System.Diagnostics.Debug.WriteLine("Step 0 - Recomendation finished: " + DateTime.Now.TimeOfDay + " - Support: " + supportPercentage + " - Confidence: " + confidence);

                    //=========================================================
                    //Evaluate recomendations
                    //=========================================================
                    //Select recomendations which user has purchased both in training and testing
                    List <RecommendedItems> recommendations = recommendedItemsList.Where(a => purchaseUsers.Contains(a.User)).ToList();
                    AccuracyNrec accuracyNrec = CalculateAccuracy(recommendations, purchases);

                    SupportConfidenceAccuracyNrec supportConfidenceAccuracyNrec = new SupportConfidenceAccuracyNrec();
                    supportConfidenceAccuracyNrec.Support      = supportPercentage;
                    supportConfidenceAccuracyNrec.Confidence   = confidence;
                    supportConfidenceAccuracyNrec.AccuracyNrec = accuracyNrec;
                    SupportConfidenceAccuracyNrecs.Add(supportConfidenceAccuracyNrec);

                    System.Diagnostics.Debug.WriteLine("Step 0 - Evaluation finished: " + DateTime.Now.TimeOfDay + " - Support: " + supportPercentage + " - Confidence: " + confidence);
                });
            }

            return(View(SupportConfidenceAccuracyNrecs));
        }