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); }
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); }