package ca.pfv.spmf.test; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URL; import ca.pfv.spmf.algorithms.associationrules.MNRRules.AlgoMNRRules; import ca.pfv.spmf.algorithms.frequentpatterns.zart.AlgoZart; import ca.pfv.spmf.algorithms.frequentpatterns.zart.TZTableClosed; import ca.pfv.spmf.input.transaction_database_list_integers.TransactionDatabase; import ca.pfv.spmf.patterns.rule_itemset_array_integer_with_count.Rules; /** * Example of how to generate minimal non redundant * association rules in source code. * * @author Philippe Fournier-Viger, 2008 */ public class MainTestMNRRules_saveToMemory{ public static void main(String[] args) throws IOException { System.out.println("STEP 1 : FIND CLOSED ITEMSETS AND MINIMUM GENERATORS By EXECUTING THE ZART ALGORITHM"); String input = fileToPath("contextZart.txt"); String output = ".//output.txt"; // double minsup = 0.6; // minimum support double minconf = 0.6; // minimum confidence TransactionDatabase database = new TransactionDatabase(); try { database.loadFile(input); } catch (Exception e) { e.printStackTrace(); } database.printDatabase(); // Applying the Zart algorithm AlgoZart zart = new AlgoZart(); TZTableClosed results = zart.runAlgorithm(database, minsup); //zart.printStatistics(); // PRINT RESULTS FROM THE ZART ALGORITHM // int countClosed=0; // int countGenerators=0; // System.out.println("==================="); // for(int i=0; i< results.levels.size(); i++){ // System.out.println("LEVEL : " + i); // for(Itemset closed : results.levels.get(i)){ // System.out.println(" CLOSED : " + 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("STEP 2 :Extract Rules from closed item set and associated generators by using MNR Rules "); // Run the algorithm to generate MNR rules AlgoMNRRules algoMNR = new AlgoMNRRules(); algoMNR.runAlgorithm(output, minconf, results, database.size()); algoMNR.printStatistics(); //****************************** read large data set *************************************** // TransactionDatabaseConverter converter = new TransactionDatabaseConverter(); // String input = fileToPath("test.arff"); // String input_converted=".//input_converted.txt"; // String output = ".//output.txt"; // String final_output =".//final_output.txt"; // Map<Integer, String> mapping = converter.convertARFFandReturnMap(input,input_converted, Integer.MAX_VALUE); // // double minsup = 0.2; // minimum support // double minconf = 0.6; // minimum confidence // // TransactionDatabase database = new TransactionDatabase(); // try { // database.loadFile(input_converted); // } catch (Exception e) { // e.printStackTrace(); // } // database.printDatabase(); // // Applying the Zart algorithm // AlgoZart zart = new AlgoZart(); // TZTableClosed results = zart.runAlgorithm(database, minsup); // zart.printStatistics(); // TFTableFrequent frequents = zart.getTableFrequent(); // zart.saveResultsToFile(output); // //zart.saveResultsToFile("final_output.txt"); // // frequents.levels.size(); // System.out.println("STEP 2 : CALCULATING MNR ASSOCIATION RULES"); // // Run the algorithm to generate MNR rules // AlgoMNRRules algoMNR = new AlgoMNRRules(); // algoMNR.runAlgorithm(output, minconf, results, database.size()); // ResultConverter converter1 = new ResultConverter(); // converter1.convert(mapping, output, final_output); } public static String fileToPath(String filename) throws UnsupportedEncodingException{ URL url = MainTestMNRRules_saveToFile.class.getResource(filename); return java.net.URLDecoder.decode(url.getPath(),"UTF-8"); } }