@Test public void testLarge() { Database db = loadTransactions(UNITTEST + "itemsets/zutaten.txt.gz", 16401); FrequentItemsetsResult res = new ELKIBuilder<>(APRIORI.class) // .with(APRIORI.Parameterizer.MINSUPP_ID, 200).build().run(db); assertEquals("Size not as expected.", 184, res.getItemsets().size()); } }
List<Itemset> itemsets = frequentResult.getItemsets(); return new AssociationRuleResult("association rules", "arules", Collections.emptyList(), frequentResult.getMeta()); this.meta = frequentResult.getMeta(); this.totalTransactions = frequentResult.getTotal();
/** * Run the Eclat algorithm * * @param db Database to process * @param relation Bit vector relation * @return Frequent patterns found */ public FrequentItemsetsResult run(Database db, final Relation<BitVector> relation) { // TODO: implement with resizable arrays, to not need dim. final int dim = RelationUtil.dimensionality(relation); final VectorFieldTypeInformation<BitVector> meta = RelationUtil.assumeVectorField(relation); // Compute absolute minsupport final int minsupp = getMinimumSupport(relation.size()); LOG.verbose("Build 1-dimensional transaction lists."); Duration ctime = LOG.newDuration(STAT + "eclat.transposition.time").begin(); DBIDs[] idx = buildIndex(relation, dim, minsupp); LOG.statistics(ctime.end()); FiniteProgress prog = LOG.isVerbose() ? new FiniteProgress("Building frequent itemsets", idx.length, LOG) : null; Duration etime = LOG.newDuration(STAT + "eclat.extraction.time").begin(); final List<Itemset> solution = new ArrayList<>(); for(int i = 0; i < idx.length; i++) { LOG.incrementProcessed(prog); extractItemsets(idx, i, minsupp, solution); } LOG.ensureCompleted(prog); Collections.sort(solution); LOG.statistics(etime.end()); LOG.statistics(new LongStatistic(STAT + "frequent-itemsets", solution.size())); return new FrequentItemsetsResult("Eclat", "eclat", solution, meta); }
/** * Run the Eclat algorithm * * @param db Database to process * @param relation Bit vector relation * @return Frequent patterns found */ public FrequentItemsetsResult run(Database db, final Relation<BitVector> relation) { // TODO: implement with resizable arrays, to not need dim. final int dim = RelationUtil.dimensionality(relation); final VectorFieldTypeInformation<BitVector> meta = RelationUtil.assumeVectorField(relation); // Compute absolute minsupport final int minsupp = getMinimumSupport(relation.size()); LOG.verbose("Build 1-dimensional transaction lists."); Duration ctime = LOG.newDuration(STAT + "eclat.transposition.time").begin(); DBIDs[] idx = buildIndex(relation, dim, minsupp); LOG.statistics(ctime.end()); FiniteProgress prog = LOG.isVerbose() ? new FiniteProgress("Building frequent itemsets", idx.length, LOG) : null; Duration etime = LOG.newDuration(STAT + "eclat.extraction.time").begin(); final List<Itemset> solution = new ArrayList<>(); for(int i = 0; i < idx.length; i++) { LOG.incrementProcessed(prog); extractItemsets(idx, i, minsupp, solution); } LOG.ensureCompleted(prog); Collections.sort(solution); LOG.statistics(etime.end()); LOG.statistics(new LongStatistic(STAT + "frequent-itemsets", solution.size())); return new FrequentItemsetsResult("Eclat", "eclat", solution, meta, relation.size()); }
@Test public void testLarge() { Database db = loadTransactions(UNITTEST + "itemsets/zutaten.txt.gz", 16401); FrequentItemsetsResult res = new ELKIBuilder<>(FPGrowth.class) // .with(FPGrowth.Parameterizer.MINSUPP_ID, 200).build().run(db); assertEquals("Size not as expected.", 184, res.getItemsets().size()); } }
List<Itemset> itemsets = frequentResult.getItemsets(); return new AssociationRuleResult("association rules", "arules", Collections.emptyList(), frequentResult.getMeta()); this.meta = frequentResult.getMeta(); this.totalTransactions = frequentResult.getTotal();
/** * Run the Eclat algorithm * * @param db Database to process * @param relation Bit vector relation * @return Frequent patterns found */ public FrequentItemsetsResult run(Database db, final Relation<BitVector> relation) { // TODO: implement with resizable arrays, to not need dim. final int dim = RelationUtil.dimensionality(relation); final VectorFieldTypeInformation<BitVector> meta = RelationUtil.assumeVectorField(relation); // Compute absolute minsupport final int minsupp = getMinimumSupport(relation.size()); LOG.verbose("Build 1-dimensional transaction lists."); Duration ctime = LOG.newDuration(STAT + "eclat.transposition.time").begin(); DBIDs[] idx = buildIndex(relation, dim, minsupp); LOG.statistics(ctime.end()); FiniteProgress prog = LOG.isVerbose() ? new FiniteProgress("Building frequent itemsets", idx.length, LOG) : null; Duration etime = LOG.newDuration(STAT + "eclat.extraction.time").begin(); final List<Itemset> solution = new ArrayList<>(); for(int i = 0; i < idx.length; i++) { LOG.incrementProcessed(prog); extractItemsets(idx, i, minsupp, solution); } LOG.ensureCompleted(prog); Collections.sort(solution); LOG.statistics(etime.end()); LOG.statistics(new LongStatistic(STAT + "frequent-itemsets", solution.size())); return new FrequentItemsetsResult("Eclat", "eclat", solution, meta, relation.size()); }
@Test public void testLarge() { Database db = loadTransactions(UNITTEST + "itemsets/zutaten.txt.gz", 16401); FrequentItemsetsResult res = new ELKIBuilder<>(Eclat.class) // .with(Eclat.Parameterizer.MINSUPP_ID, 200).build().run(db); assertEquals("Size not as expected.", 184, res.getItemsets().size()); } }
return new FrequentItemsetsResult("APRIORI", "apriori", solution, meta);
@Test public void testIncreasing() { Database db = loadTransactions(UNITTEST + "itemsets/increasing.txt", 4); { FrequentItemsetsResult res = new ELKIBuilder<>(APRIORI.class) // .with(APRIORI.Parameterizer.MINSUPP_ID, 1).build().run(db); assertEquals("Size not as expected.", 15, res.getItemsets().size()); } { FrequentItemsetsResult res = new ELKIBuilder<>(APRIORI.class) // .with(APRIORI.Parameterizer.MINSUPP_ID, .5).build().run(db); assertEquals("Size not as expected.", 7, res.getItemsets().size()); } { FrequentItemsetsResult res = new ELKIBuilder<>(APRIORI.class) // .with(APRIORI.Parameterizer.MINSUPP_ID, 3).build().run(db); assertEquals("Size not as expected.", 3, res.getItemsets().size()); } { FrequentItemsetsResult res = new ELKIBuilder<>(APRIORI.class) // .with(APRIORI.Parameterizer.MINSUPP_ID, 4).build().run(db); assertEquals("Size not as expected.", 1, res.getItemsets().size()); } }
return new FrequentItemsetsResult("APRIORI", "apriori", solution, meta, size);
@Test public void testIncreasing() { Database db = loadTransactions(UNITTEST + "itemsets/increasing.txt", 4); { FrequentItemsetsResult res = new ELKIBuilder<>(Eclat.class) // .with(Eclat.Parameterizer.MINSUPP_ID, 1).build().run(db); assertEquals("Size not as expected.", 15, res.getItemsets().size()); } { FrequentItemsetsResult res = new ELKIBuilder<>(Eclat.class) // .with(Eclat.Parameterizer.MINSUPP_ID, .5).build().run(db); assertEquals("Size not as expected.", 7, res.getItemsets().size()); } { FrequentItemsetsResult res = new ELKIBuilder<>(Eclat.class) // .with(Eclat.Parameterizer.MINSUPP_ID, 3).build().run(db); assertEquals("Size not as expected.", 3, res.getItemsets().size()); } { FrequentItemsetsResult res = new ELKIBuilder<>(Eclat.class) // .with(Eclat.Parameterizer.MINSUPP_ID, 4).build().run(db); assertEquals("Size not as expected.", 1, res.getItemsets().size()); } }
return new FrequentItemsetsResult("APRIORI", "apriori", solution, meta, size);
List<Itemset> frequentItemsets = aprioriResult.getItemsets(); if(msg != null) { msg.append("\n Frequent itemsets: ").append(frequentItemsets);
LOG.statistics(new LongStatistic(STAT + "frequent-itemsets", solution.size())); return new FrequentItemsetsResult("FP-Growth", "fp-growth", solution, meta, relation.size());
@Test public void testIncreasing() { Database db = loadTransactions(UNITTEST + "itemsets/increasing.txt", 4); { FrequentItemsetsResult res = new ELKIBuilder<>(FPGrowth.class) // .with(FPGrowth.Parameterizer.MINSUPP_ID, 1).build().run(db); assertEquals("Size not as expected.", 15, res.getItemsets().size()); } { FrequentItemsetsResult res = new ELKIBuilder<>(FPGrowth.class) // .with(FPGrowth.Parameterizer.MINSUPP_ID, .5).build().run(db); assertEquals("Size not as expected.", 7, res.getItemsets().size()); } { FrequentItemsetsResult res = new ELKIBuilder<>(FPGrowth.class) // .with(FPGrowth.Parameterizer.MINSUPP_ID, 3).build().run(db); assertEquals("Size not as expected.", 3, res.getItemsets().size()); } { FrequentItemsetsResult res = new ELKIBuilder<>(FPGrowth.class) // .with(FPGrowth.Parameterizer.MINSUPP_ID, 4).build().run(db); assertEquals("Size not as expected.", 1, res.getItemsets().size()); } }
LOG.statistics(new LongStatistic(STAT + "frequent-itemsets", solution.size())); return new FrequentItemsetsResult("FP-Growth", "fp-growth", solution, meta);
List<Itemset> frequentItemsets = aprioriResult.getItemsets(); if(LOG.isDebugging()) { msg.append("\n Frequent itemsets: ").append(frequentItemsets);
LOG.statistics(new LongStatistic(STAT + "frequent-itemsets", solution.size())); return new FrequentItemsetsResult("FP-Growth", "fp-growth", solution, meta, relation.size());
assertEquals("Size not as expected.", 14, res.getItemsets().size()); for(Itemset i : res.getItemsets()) { assertEquals("Bad support", 4 - i.length(), i.getSupport()); assertEquals("Size not as expected.", 10, res.getItemsets().size()); for(Itemset i : res.getItemsets()) { assertEquals("Bad support", 4 - i.length(), i.getSupport()); assertEquals("Size not as expected.", 4, res.getItemsets().size()); for(Itemset i : res.getItemsets()) { assertEquals("Bad support", 4 - i.length(), i.getSupport()); assertEquals("Size not as expected.", 0, res.getItemsets().size()); .with(Eclat.Parameterizer.MAXLENGTH_ID, 3) // .build().run(db); assertEquals("Size not as expected.", 10, res.getItemsets().size()); for(Itemset i : res.getItemsets()) { assertEquals("Bad support", 4 - i.length(), i.getSupport());