CMAR代码学习1 生成FP-tree挖掘规则[这里是图片001]https://blog.csdn.net//article/details/124717377
有一个java语法的知识点,通过赋值给属性,会自动调用toString方法
要特别注意的是,下面这个例子当中,要写成return “Animal [i=” + this.i + “, o=” + this.o +“,kafang=” +(this.kafang=(NUMBER_INSTANCES/3))+“]”;有this指针toString()方法自动被调用,并且有值更新的时候toString()里的值也会默认更新。如果写成,return “Animal [i=” + i + “, o=” + o +“,kafang=” +(kafang=(NUMBER_INSTANCES/3))+“]”;则toString()方法不能被自动调用,要使用System.out.println();才能被调用
public class Animal {
int i=1;
String o="hello";
double kafang=0;
static double NUMBER_INSTANCES=0;
public void printType() {
System.out.println("Cat");
}
@Override
public String toString() {
return "Animal [i=" + this.i + ", o=" + this.o +",kafang=" +(this.kafang=(NUMBER_INSTANCES/3))+"]";
}
public static void main(String[] args) {
Animal dog=new Animal();
//通过赋值,会调用toString方法
dog.i=2;
System.out.println(dog);
//更新值,toString方法也会更新
// dog.NUMBER_INSTANCES=9;
//通过赋值,会调用toString方法,自动计算了卡方值
Animal.NUMBER_INSTANCES=9;
// dog.i=2;
System.out.println("kafang="+dog.kafang);
System.out.println(dog);
}
}
卡方值的计算
AlgoCMAR.java
生成这个类,new ClassifierCMAR(rules, dataset, delta);,利用该类计算卡方值并利用CR-tree剪枝
/**
* Train a classifier
* @param dataset a training dataset
* @return a rule classifier
* @throws Exception if an error occurs
*/
@Override
public ClassifierCMAR train(Dataset dataset){
// Apply a modified FPGrowth algorithm to obtain the rules
FPGrowthForCMAR fpgrowth = new FPGrowthForCMAR(dataset, minSup, minConf);
List<Rule> rules = fpgrowth.run();
// Return a classifier that is created using these rules
return new ClassifierCMAR(rules, dataset, delta);
}
ClassifierCMAR.java
NUMBER_INSTANCES表示数据的总条数
/**
* Constructor
*
* @param rules formi