Esempio n. 1
0
        protected virtual Itemset[] PruneCandidatesByAprioriSlim(UInt32[][] candidatesItemset, Itemset[] frequentItemset)
        {
            var frequentCandidates = new List <Itemset>();
            var frequent           = new HashSet <UInt32[]>(frequentItemset.Select(i => i.Items), new ItemsEqualityComparer());

            for (int i = 0; i < candidatesItemset.Length; i++)
            {
                bool hasAllSubItemsetFrequent = true;


                // TODO: Lazy generating, we can stop generating subitemset if we know that an one is not frequent.
                List <UInt32[]> subItemsets = ItemsetHelper.GenerateOneLevelSubItemsets(candidatesItemset[i]);

                for (int j = 0; j < subItemsets.Count; j++)
                {
                    if (frequent.Contains(subItemsets[j]))
                    {
                        continue;
                    }

                    hasAllSubItemsetFrequent = false;

                    break;
                }

                if (hasAllSubItemsetFrequent)
                {
                    frequentCandidates.Add(new Itemset(candidatesItemset[i]));
                }
            }

            return(frequentCandidates.ToArray());
        }
Esempio n. 2
0
        public void Can_Generate_SubItemset_From_2_Length_Itemset()
        {
            Itemset itemset = new Itemset(new uint[] { 0, 1 });

            Itemset[] result = ItemsetHelper.GenerateOneLevelSubItemsets(itemset).ToArray();

            Assert.AreEqual(2, result.Length);

            Assert.AreEqual(1, result[0].Length);
            Assert.AreEqual(1, result[1].Length);

            Assert.AreEqual(result[0][0], 0);
            Assert.AreEqual(result[1][0], 1);
        }
Esempio n. 3
0
        public void Can_Generate_SubItemset_From_3_Length_Itemset()
        {
            Itemset itemset = Itemset.Create(0, 1, 2);

            Itemset[] result = ItemsetHelper.GenerateOneLevelSubItemsets(itemset).ToArray();

            Assert.AreEqual(3, result.Length);

            Assert.AreEqual(2, result[0].Length);
            Assert.AreEqual(2, result[1].Length);
            Assert.AreEqual(2, result[2].Length);

            Assert.AreEqual(result[0][0], 0);
            Assert.AreEqual(result[0][1], 1);

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

            Assert.AreEqual(result[2][0], 1);
            Assert.AreEqual(result[2][1], 2);
        }