用JAVA实现关联分析算法,找到频繁项集
大二做数据分析比赛遇到一个商品关联分析的问题,突发奇想写了个关联分析算法。
目前看来快的飞起,使用起来也比较简单。于是乎做个分享!!
一共只有140行代码,有需要的朋友可以拿去使用
问题如下
假设这个是顾客的购物清单
目的是输出最多的 商品组合出现次数
{“香蕉”,“橘子”,“苹果”,“梨子”,“鲜牛奶”,“西红柿”};
{“香蕉”,“橘子”,“西瓜”};
{“香蕉”,“橘子”,“西瓜”,“酸奶”,“啤酒”};
{“橘子”,“西瓜”,“啤酒”,“西红柿”};
{“橘子”,“西瓜”,“梨子”,“鲜牛奶”};
{“香蕉”,“西瓜”};
有一个主要问题是,每个购物单的长度不一样。如何解决呢?上代码:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
/**
* 使用java实现,输出每种商品组合的出现次数
*
* @author dhy
*
*/
public class Apriori {
//这个用来存储生成的项集
private static List<String[]> resultarray = new ArrayList<String[]>();
/**
* 给出购物清单,生成的组合
* @param args
*/
public static void main(String[] args) {
/*
* 假设这个是顾客的购物清单
* 目的是输出最多的 商品组合出现次数
*/
String[] a = {
"香蕉","橘子","苹果","梨子","鲜牛奶","西红柿"};
String[] b = {
"香蕉","橘子","西瓜"};
String[] c