package ca.pfv.spmf.test;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.util.List;
import ca.pfv.spmf.algorithms.frequentpatterns.zart.AlgoZart;
import ca.pfv.spmf.algorithms.frequentpatterns.zart.TFTableFrequent;
import ca.pfv.spmf.algorithms.frequentpatterns.zart.TZTableClosed;
import ca.pfv.spmf.input.transaction_database_list_integers.TransactionDatabase;
import ca.pfv.spmf.patterns.itemset_array_integers_with_count.Itemset;
/**
* Example of how to use the Zart Algorithm in source code.
* @author Philippe Fournier-Viger, 2013
*
*/
public class MainTestZart_saveToMemory {
public static void main(String[] args) throws IOException {
// Load a binary context
TransactionDatabase context = new TransactionDatabase();
context.loadFile(fileToPath("contextZart.txt"));
// Apply the Zart algorithm
double minsup = 0.4;
AlgoZart zart = new AlgoZart();
TZTableClosed results = zart.runAlgorithm(context, minsup);
TFTableFrequent frequents = zart.getTableFrequent();
zart.printStatistics();
// PRINTING RESULTS
int countClosed=0;
int countGenerators=0;
System.out.println("======= List of closed itemsets and their generators ============");
for(int i=0; i< results.levels.size(); i++){
System.out.println("LEVEL (SIZE) : " + i);
for(Itemset closed : results.levels.get(i)){
System.out.println(" CLOSED : \n " + closed.toString() + " supp : " + closed.getAbsoluteSupport());
countClosed++;
System.out.println(" GENERATORS : ");
List<Itemset> generators = results.mapGenerators.get(closed);
// if there are some generators
if(generators.size()!=0) {
for(Itemset generator : generators){
countGenerators++;
System.out.println(" =" + generator.toString());
}
}else {
// otherwise the closed itemset is a generator
countGenerators++;
System.out.println(" =" + closed.toString());
}
}
}
System.out.println(" NUMBER OF CLOSED : " + countClosed + " NUMBER OF GENERATORS : " + countGenerators );
// SECOND, WE PRINT THE LIST OF ALL FREQUENT ITEMSETS
System.out.println("======= List of all frequent itemsets ============");
int countFrequent =0;
for(int i=0; i< frequents.levels.size(); i++){
System.out.println("LEVEL (SIZE) : " + i);
for(Itemset itemset : frequents.levels.get(i)){
countFrequent++;
System.out.println(" ITEMSET : " + itemset.toString() + " supp : " + itemset.getAbsoluteSupport());
}
}
System.out.println("NB OF FREQUENT ITEMSETS : " + countFrequent);
}
public static String fileToPath(String filename) throws UnsupportedEncodingException{
URL url = MainTestZart_saveToMemory.class.getResource(filename);
return java.net.URLDecoder.decode(url.getPath(),"UTF-8");
}
}