对于Apriori算法,Apriori算法是一种挖掘关联规则的频繁项集算法,在很多领域中应用广泛。
它的算法思想是:
1先找到所有的小频繁项集,
2然后做连接步骤,将小频繁项集拼接作为候选集,
3然后对候选集做剪枝步骤。
4将候选集中支持度小于最小支持度的项删除。
5循环上述步骤,直到找到所有最大项集。
这个算法的核心是运用了频繁项集的反单调性。即先验性质
频繁项集的所有非空子集都是频繁的
利用上述思想,我准备用java来实现它,能够对给定的数据进行挖掘关联规则。
首先我准备使用文件来作为数据输入,因为对于要挖掘的数据集肯定是巨大的,利用文件输入才比较合适。
1.对于文件格式,以行为单位输入,每行表示一个事务集。
2.对于数据在java中存储结构我使用Map来进行存储的。
3.代码可以展示程序的步骤,输出算法每次进行的中间结果。最后得到频繁项集。
4.数据集中的项在程序中只能为单个字符,读者可以修改成处理字符串的项。
5.程序的复杂度可能存在很多改进的地方,对于大型数据集的处理还有待优化。
下面为具体代码实现:
package pack1;
import java.io.*;
import java.util.*;
import java.util.Map.Entry;
public class apriori {
//字符串排序(冒泡实现)
public static String sort(String str){