abstractmodel.java

来自「用java实现的关联规则算法Apriori算法」· Java 代码 · 共 96 行

JAVA
96
字号
package dragon.ml.seqmodel.model;

import dragon.ml.seqmodel.data.*;

/**
 * <p>Abstract class for model graph </p>
 * <p>Copyright: Copyright (c) 2005</p>
 * <p>Company: IST, Drexel University</p>
 * @author Davis Zhou
 * @version 1.0
 */


public abstract class AbstractModel implements ModelGraph {
    protected int numLabels;
    protected String name;

    public AbstractModel(int labelNum, String name) {
        numLabels = labelNum;
        this.name = name;
    }

    public int getLabelNum() {
        return numLabels;
    }

    public int getStateNum() {
        return numLabels;
    }

    public int getOriginalLabelNum() {
        return numLabels;
    }

    public int getMarkovOrder() {
        return 1;
    }

    public boolean mapStateToLabel(DataSequence seq) {
        //do nothing unless nested model
        return true;
    }

    public boolean mapLabelToState(DataSequence seq) {
        //do nothing unless nested model
        return true;
    }

    public boolean mapLabelToState(DataSequence data, int len, int start) {
        //used for inner model only
        return true;
    }

    public void printGraph() {
        System.out.println("Numnodes = " + getStateNum() + " NumEdges " + getEdgeNum());
        EdgeIterator iter = getEdgeIterator();
        for (iter.start(); iter.hasNext(); ) {
            Edge edge = iter.next();
            System.out.println(edge.getStart() + "-->" + edge.getEnd());
        }
        System.out.print("Start states");
        for (int i = 0; i < getStartStateNum(); i++) {
            System.out.print(" " + getStartState(i));
        }
        System.out.println("");

        System.out.print("End states");
        for (int i = 0; i < getEndStateNum(); i++) {
            System.out.print(" " + getEndState(i));
        }
        System.out.println("");
    }

    public static ModelGraph getNewModelGraph(int numLabels, String modelSpecs) {
        int markovOrder;

        try {
            modelSpecs = modelSpecs.toLowerCase().trim();
            if (modelSpecs.equalsIgnoreCase("noEdge")) {
                return new NoEdgeModel(numLabels);
            } else if (modelSpecs.equalsIgnoreCase("naive") || modelSpecs.equalsIgnoreCase("semi-markov")) {
                return new CompleteModel(numLabels);
            } else if (modelSpecs.startsWith("naive") && modelSpecs.indexOf(',') < 0) {
                markovOrder=Integer.parseInt(modelSpecs.substring(modelSpecs.indexOf(' ')+1));
                return new CompleteModel(numLabels, markovOrder);
            } else {
                return new NestedModel(numLabels, modelSpecs);
            }
        }
        catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
}

⌨️ 快捷键说明

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