这个一个apriori算法的演示版本,所有的代码都在一个类。仅供研究算法参考
package test;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Vector;
//用set写的apriori算法
public class AprioriSetBasedDemo {
class Transaction {
/*
* 购物记录,用set保存多个货物名
*/
private HashSet<String> pnSet = new HashSet<String>();
public Transaction() {
pnSet.clear();
}
public Transaction(String[] names) {
pnSet.clear();
for (String s : names) {
pnSet.add(s);
}
}
public HashSet<String> getPnSet() {
return pnSet;
}
public void addPname(String s) {
pnSet.add(s);
}
public boolean containSubSet(HashSet<String> subSet) {
return pnSet.containsAll(subSet);
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
Iterator<String> iter = pnSet.iterator();
while (iter.hasNext()) {
sb.append(iter.next() + ",");
}
return "Transaction = [" + sb.toString() + "]";
}
}
class TransactionDB {
// 记录所有的Transaction
private Vector<Transaction> vt = new Vector<Transaction>();
public TransactionDB() {
vt.clear();
}
public int getSize() {
return vt.size();
}
public void addTransaction(Transaction t) {
vt.addElement(t);
}
public Transaction getTransaction(int idx) {
return vt.elementAt(idx);
}
}
public class AssoRule implements Comparable<AssoRule> {
private String ruleContent;
private double confidence;
public vo