Esempio n. 1
0
        protected override Itemset[] ScanDbAndCountCandidatesSupport(Itemset[] candidates)
        {
            if (candidates.Length == 0)
            {
                return(candidates);
            }

            Dictionary <UInt32[], Itemset> candidatesDictionary = CreateCandidatesDictionary(candidates);

            foreach (var transaction in _db.Transactions)
            {
                List <UInt32[]> transactionsSubItemsets = ItemsetHelper.GenerateSubItemsets(transaction.Items, candidates[0].Length);

                for (int i = 0; i < transactionsSubItemsets.Count; i++)
                {
                    Itemset itemset;

                    if (candidatesDictionary.TryGetValue(transactionsSubItemsets[i], out itemset))
                    {
                        itemset.Support++;
                    }
                }
            }

            return(candidates);
        }
Esempio n. 2
0
        public void Can_Generate_All_3_Length_SubItemsets()
        {
            Itemset itemset = new Itemset(new uint[] { 1, 2, 3, 5, 6 });

            var result = ItemsetHelper.GenerateSubItemsets(itemset.Items, 3);

            Assert.AreEqual(10, result.Count);

            // Length
            Assert.AreEqual(3, result[0].Length);
            Assert.AreEqual(3, result[9].Length);

            // SubItemsets
            Assert.AreEqual(result[0][0], 1);
            Assert.AreEqual(result[0][1], 2);
            Assert.AreEqual(result[0][2], 3);

            Assert.AreEqual(result[9][0], 3);
            Assert.AreEqual(result[9][1], 5);
            Assert.AreEqual(result[9][2], 6);
        }