package com.github.lwhite1.tablesaw.api.ml.association;
import com.github.lwhite1.tablesaw.api.CategoryColumn;
import com.github.lwhite1.tablesaw.api.ShortColumn;
import com.github.lwhite1.tablesaw.api.Table;
import it.unimi.dsi.fastutil.ints.IntRBTreeSet;
import it.unimi.dsi.fastutil.objects.Object2DoubleMap;
import it.unimi.dsi.fastutil.objects.Object2DoubleOpenHashMap;
import smile.association.ItemSet;
import java.util.List;
/**
*
*/
public class FrequentItemsetExample {
public static void main(String[] args) throws Exception {
Table table = Table.createFromCsv("data/movielens.data", true, '\t');
out(table.structure().print());
out(table.shape());
ShortColumn movie = table.shortColumn("movie");
CategoryColumn moviecat = CategoryColumn.create("MovieCat");
for (int i = 0; i < movie.size(); i++) {
moviecat.addCell(movie.getString(i));
}
table.addColumn(moviecat);
out(table.shortColumn("user").unique().size());
out(table.shortColumn("movie").unique().size());
FrequentItemset model = new FrequentItemset(table.shortColumn("user"), table.categoryColumn("MovieCat"), .24);
List<ItemSet> itemSetList = model.learn();
out("Frequent Itemsets");
for (ItemSet itemSet : itemSetList) {
if (itemSet.items.length == 2)
out(itemSet);
}
out(model.supportMap(250));
Object2DoubleOpenHashMap<IntRBTreeSet> confidenceMap = model.confidenceMap(.90);
Object2DoubleMap.FastEntrySet<IntRBTreeSet> entrySet = confidenceMap.object2DoubleEntrySet();
out("");
out("Confidence Map");
for (Object2DoubleMap.Entry<IntRBTreeSet> entry : entrySet) {
out(entry.getKey() + " : " + entry.getDoubleValue());
}
Object2DoubleOpenHashMap<IntRBTreeSet> confidenceMap2 = model.confidenceMap();
Object2DoubleMap.FastEntrySet<IntRBTreeSet> entrySet2 = confidenceMap2.object2DoubleEntrySet();
out("");
out("Confidence Map2");
for (Object2DoubleMap.Entry<IntRBTreeSet> entry2 : entrySet2) {
out(entry2.getKey() + " : " + entry2.getDoubleValue());
}
}
private static void out(Object o) {
System.out.println(String.valueOf(o));
}
}