--- a +++ b/assoc_rules/AssocFPGrowth.java @@ -0,0 +1,57 @@ +package assoc_rules; + +import java.io.File; +import java.io.FileWriter; +import java.time.LocalDateTime; + +import weka.associations.Apriori; +import weka.associations.FPGrowth; +import weka.core.Instances; +import weka.core.converters.ConverterUtils.DataSource; + +/** + * This class implements FP growth algorithm to obtain association rule from clean, UMLS mapped and filtered FAERS data + * @author zhengc + * + */ +public class AssocFPGrowth{ + public static void main(String args[]) throws Exception{ + //load dataset + + String dataset = args[0]; + System.out.println("Algorithm starts: " + LocalDateTime.now()); + System.out.println(); + + DataSource source = new DataSource(dataset); + //get instances object + Instances data = source.getDataSet(); + int numAttr = data.numAttributes(); + int numIns = data.numInstances(); + + System.out.println("Number of attributes is " + numAttr); + System.out.println("Number of instances is " + numIns); + + // lift-based algorithm + String[] opts = new String[10]; + opts[0] = "-T"; opts[1] = "1"; + opts[2] = "-C"; opts[3] = "1"; + opts[4] = "-M"; opts[5] = "0.000002"; + opts[6] = "-N"; opts[7] ="200000"; + opts[8] = "-I"; opts[9] = "3"; + + model.setOptions(opts); + //build model + model.buildAssociations(data); + + //print out and save the extracted rules to file + String results = model.toString(); + System.out.println(results); + + + FileWriter fw = new FileWriter(new File(resultfile)); + fw.write(results); + fw.close(); + + System.out.println("Algorithm ends: " + LocalDateTime.now()); + } +}