fpgrowth.java

来自「网上下载的用java写的fpgrowth算法的源代码」· Java 代码 · 共 62 行

JAVA
62
字号
package association.fptree;

import java.io.*;
import java.util.LinkedList;
import association.fptree.ITree.Node;
/**
 * FP_growth算法
 * @author qjt
 *
 */
public class FPGrowth {
    int minSupport=1;
    CreateFPTree ct;
    ITree iTree;                                         //存储挖掘出的所有项集的树
    FPGrowth(){
    	ct=new CreateFPTree();
    }
    /*主程序*/
    public void Start(FPTree tree,ITree itr,int supp){
    	iTree=itr;
    	minSupport=supp;
    	FP_growth(tree,itr.head);
    }
    /**
     * fp-growth算法
     * @param  tree   FPtree
     * @param  head   频繁项集树的头结点
     * */
public void FP_growth(FPTree tree,LinkedList<Node> head){
    	FPTree           branch;                     //条件FPTree
    	String           itemName;
    	int              len,i=0,count;
    	LinkedList<Node> l,cl;
    	ITree            itr=new ITree();
    	ITree.Node       node;
 
    	l=head;
    	len=tree.itemTb.Length();
    	while(i<len){
    		count=tree.itemTb.ReadCount(i);
    		if (count<minSupport){
    			i++;
    			continue;
    		}
    		itemName=tree.itemTb.ReadItem(i);
    		node=itr.new Node(itemName,count);
    		l.add(node);
    		branch=ct.ConditionFPT(tree,itemName);       //产生条件FP树
    	    if (branch==null){                           /*如果没有产生条件FPTree,
    	    	                                              当一个项只是root结点下的子结点是就不会产生条件FPTree */
    	        i++;
    	    	continue;
    	    }	
    	    cl=new LinkedList<Node>();
    	    node.cNode=cl;
    		FP_growth(branch,cl);
    		branch=null;
    	    i++;
    	}
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?