private void writeToFile(String outName) throws FileNotFoundException, UnsupportedEncodingException { String minSupport = itemsetsSupport.get(findSmallerValue(itemsetsSupport)); String minConfidence = findMinConfidence(); PrintWriter writer = new PrintWriter(outName, "UTF-8"); // Writting Info writer.println( "<PMML xmlns=\"http://www.dmg.org/PMML-4_1\" version=\"4.1\">\n" + " <Header copyright=\"www.dmg.org\" description=\"Undefined\"/>\n" + " <AssociationModel functionName=\"associationRules\" numberOfTransactions=\"Undefined\" numberOfItems=\"" + items.size() + "\" minimumSupport=\"" + minSupport + "\" minimumConfidence=\"" + minConfidence + "\" numberOfItemsets=\"" + itemsets.size() + "\" numberOfRules=\"" + rules.size() + "\">\n" + ""); writer.println("\n\n<!-- Items -->"); // Write items for (Map.Entry<String, Integer> entry : items.entrySet()) { String key = entry.getKey(); Integer id = entry.getValue(); writer.println("<Item id=\"" + id + "\" value=\"" + key + "\"/>"); } writer.println("\n\n<!-- Itemsets -->"); // Write itemsets for (Map.Entry<String, ArrayList<Integer>> entry : itemsets.entrySet()) { String key = entry.getKey(); ArrayList<Integer> ids = entry.getValue(); String support = itemsetsSupport.get(key); int n = ids.size() - 1; // First element is the itemset id writer.println( "<Itemset id=\"" + ids.get(0) + "\" support=\"" + support + "\" numberOfItems=\"" + n + "\">"); for (int i = 1; i < ids.size(); i++) { Integer id = ids.get(i); writer.println("<ItemRef itemRef=\"" + id + "\"/>"); } writer.println("</Itemset>"); } writer.println("\n\n<!-- Assotiation Rules -->"); // Write rules for (int i = 0; i < rules.size(); i++) { String measures = ""; for (StringPair measure : rulesMeasures.get(i)) { measures += measure.getKey() + "=" + '"' + measure.getValue() + "\" "; } writer.println( "<AssociationRule id=\"" + i + "\" " + measures + " antecedent=\"" + rules.get(i).get(0) + "\" consequent=\"" + rules.get(i).get(1) + "\"/>"); } // Finish file writer.println("</AssociationModel>\n" + "</PMML>"); writer.flush(); writer.close(); }
@Override public int compare(StringPair first, StringPair second) { return first.getKey().compareTo(second.getKey()); }
@Override public void setReference(StringPair toCompare) { this.reference = toCompare.getKey(); }
@Override public boolean equalToReference(StringPair candidate) { return this.reference.equals(candidate.getKey()); }
@Override public int hash(StringPair record) { return record.getKey().hashCode(); }