package blatt8; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Random; public class Apriori { static List itemsets = new ArrayList(); static float minSup = 0.01f; static String path = "transactions.txt"; static int numItems=0; static int numTransactions=0; private static void analyzeTransactionFile(){ try (BufferedReader br = new BufferedReader(new FileReader(path))) { String line; while ((line = br.readLine()) != null) { numTransactions++; String[] products = line.split("\\s+"); for(int i=0;inumItems){ numItems = Integer.parseInt(products[i])+1; } } } } catch(IOException e){ e.printStackTrace(); } System.out.println("Num Transactions:"+numTransactions); System.out.println("Num Items:"+numItems); } private static void AprioriAlgorithm(){ int k=1; //Calculate L1 System.out.println(k+"-Itemsets"); find_frequent_1_itemsets(); for (k=2;itemsets.size()>0;k++) { System.out.println("\n"+k+"-Itemsets"); generateCandidates(); calculateFrequentItemsets(); } } private static void generateCandidates() { int k = itemsets.get(0).length+1; List candidates = new ArrayList(); for(int i=0; i(candidates); if(itemsets.size()>0)System.out.println(itemsets.size()+" Candidates for k="+itemsets.get(0).length); else System.out.println("0 Candidates"); } private static boolean prune(int[] c) { // if(new Random().nextInt(50)==0)return false; return false; // for(int skip=0;skip=skip) // subset[i]=c[i+1]; // else // subset[i]=c[i]; // } // boolean match=false; // for(int i=0;i(); for(int i=0; i=minSup){ frequent.add(itemsets.get(i)); printItemset(itemsets.get(i)); } } itemsets = frequent; if(itemsets.size()>0)System.out.println("Total Number Frequent "+itemsets.get(0).length+"-Itemsets: "+itemsets.size()); else System.out.println("0 Frequent"); } private static void printItemset(int[] is) { String print=""; for(int i=0;i