// generates frequent item set for k= 3+ public List <FrequentItemSet> GenerateFrequentItemSet(List <FrequentItemSet> frequentItem, List <TransactionSet> hashedTransactionSet, int currentTupple, int support) { List <FrequentItemSet> frequentitemSet = new List <FrequentItemSet>(); GenerateCandidateSet gcs = new GenerateCandidateSet(); List <CandidateItemSet> candidateItemSetAtLevel = gcs.GenerateCandidate(frequentItem, hashedTransactionSet, currentTupple, support); if (candidateItemSetAtLevel.Count() > 0) { foreach (var c in candidateItemSetAtLevel) { int count = GetSupportCount(c, hashedTransactionSet, currentTupple); if (count >= support) { FrequentItemSet fs = new FrequentItemSet(); fs.Values = new List <int>(); fs.Values.AddRange(c.Values); fs.Count = count; fs.Values.Sort(); frequentitemSet.Add(fs); } } } return(frequentitemSet); }
// generates frequent item set for k=2. Logic for K= is different as it doesnt need subset to be checked public List <FrequentItemSet> GenerateFrequentItemSet(List <HashMap> hashitems, List <TransactionSet> hashedTransactionSet, int currentTupple, int support) { List <FrequentItemSet> fisATlevelk = new List <FrequentItemSet>(); GenerateCandidateSet gcs = new GenerateCandidateSet(); List <CandidateItemSet> frequentItemSetAtLevel = gcs.GenerateCandidate(hashitems, hashedTransactionSet, currentTupple, support); if (frequentItemSetAtLevel.Count > 0) { foreach (var c in frequentItemSetAtLevel) { FrequentItemSet fs = new FrequentItemSet(); fs.Values = new List <int>(); fs.Values.AddRange(c.Values); fs.Count = c.Count; fs.TransactionID = c.TransactionID; fs.Values.Sort(); fisATlevelk.Add(fs); } } return(fisATlevelk); }