Apriori 算法 java 的实现

本文介绍了一个用Java实现的Apriori算法,用于挖掘数据中的频繁项集和关联规则。通过示例数据,展示了如何初始化数据,生成候选集,以及计算规则的过程。
摘要由CSDN通过智能技术生成
     今天花了一天的时间写了个Apriori的算法实现,有点结果,但不完善。基本要素都有了,包括生成频繁集和关联规则~
     放上来跟大家分享个~~吧node.java和apriori.java放一个包里,运行apriori就有结果可观察。

apriori.java

package apriori;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;

public class Apriori {
    String[][] data ={
                      {"beaf","chicken","milk"},
                      {"beaf","cheeze"},
                      {"cheeze","boots"},
                      {"beaf","chicken","cheeze"},
                      {"beaf","chicken","cloth","cheeze","milk"},
                      {"chicken","cloth","milk"},
                      {"chicken","milk","cloth"}
                      };
    
    ArrayList<ArrayList<String>> D = new ArrayList<ArrayList<String>>();    //main data
    ArrayList<ArrayList<Node>> R = new ArrayList<ArrayList<Node>>();        //frequency sets final result, including all layer
    ArrayList<Node> C = new ArrayList<Node>();                //candidate sets
    ArrayList<Node> F = new ArrayList<Node>();                //frequency sets
    HashSet<String> set = new HashSet<String>();
    int layer =1;
    String split = ",";
    
    // initiate the string data into arraylist
    void init(){
        int num=0;
        for(int i=0; i<data.length; i++){
            ArrayList<String> al = new ArrayList();
            for(int j=0; j<data[i].length; j++){
                set.add(data[i][j]);
                al.add(data[i][j]);
            }
            D.add(al);
        }
        Iterator<String> it1=set.iterator();
        Node node;
        String temp;
        while(it1.hasNext()){
            temp = it1.next();
            num = 0;
            Iterator<ArrayList<String>> it2 = D.iterator();
            ArrayList<String> al = new ArrayList<String>();
            while(it2.hasNext()){
                if(it2.next().contains(temp))num++;
            }
            node = new Node(temp,num);
            C.add(node);
            if(num>1){
                F.add(n
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值