public void With_a_singleton_only_the_correct_set_is_returned() { //Given var a = new ItemSet <IFact <string> >(factA); var empty = new ItemSet <IFact <string> >(); //When var result = PowerSetGenerator <string> .GeneratePowerSet(a); //Then Assert.Equal(2, result.Count); Assert.Contains(a, result); Assert.Contains(empty, result); }
public List <AssociationRule <T> > GenerateCandidateRules(List <ItemSet <IFact <T> > > frequentPatterns) { var candidateRules = new List <AssociationRule <T> >(); frequentPatterns.ForEach(x => { var powerSet = PowerSetGenerator <T> .GeneratePowerSet(x); candidateRules.AddRange(powerSet.Where(set => !set.IsEmpty() && set.Items.Count < x.Items.Count).Select(set => { return(new AssociationRule <T>(set, x.Not(set))); })); }); return(candidateRules); }
public List <AssociationRule <T> > GenerateCandidateRules(IEnumerable <IFact <T> > targetFacts, List <ItemSet <IFact <T> > > frequentPatterns) { if (targetFacts == null) { return(GenerateCandidateRules(frequentPatterns)); } var candidateRules = new List <AssociationRule <T> >(); frequentPatterns.ForEach(x => { var powerSet = PowerSetGenerator <T> .GeneratePowerSet(x); candidateRules.AddRange(powerSet.Where(set => !set.IsEmpty() && !candidateRules.Any(rule => rule.Left.Equals(set))).Select(set => { var targetItemset = new ItemSet <IFact <T> >(targetFacts); return(new AssociationRule <T>(set, targetItemset)); })); }); return(candidateRules); }
public void With_a_three_item_set_only_the_correct_sets_are_returned() { //Given var abc = new ItemSet <IFact <string> >(new List <IFact <string> >() { factA, factB, factC }); //When var result = PowerSetGenerator <string> .GeneratePowerSet(abc); //Then var empty = new ItemSet <IFact <string> >(); var a = new ItemSet <IFact <string> >(factA); var b = new ItemSet <IFact <string> >(factB); var c = new ItemSet <IFact <string> >(factC); var ab = new ItemSet <IFact <string> >(new List <IFact <string> >() { factA, factB }); var bc = new ItemSet <IFact <string> >(new List <IFact <string> >() { factB, factC }); var ac = new ItemSet <IFact <string> >(new List <IFact <string> >() { factA, factC }); Assert.Equal(8, result.Count); Assert.Contains(a, result); Assert.Contains(b, result); Assert.Contains(c, result); Assert.Contains(ab, result); Assert.Contains(ac, result); Assert.Contains(bc, result); Assert.Contains(abc, result); Assert.Contains(empty, result); }