一、ClassifyInstance
首先先说一下构造好的分类树是如何对一个新的Instance进行区分。
直观上,会对树进行一个检索,从根节点根据属性的不同,最终走到叶子节点,得到具体的分类。
但Weka在实现上,是遍历了这个Instance属于不同的class的可能性,并从中选出了一个最大的,代码如下:
public double classifyInstance(Instance instance)
throws Exception {
double maxProb = -1;
double currentProb;
int maxIndex = 0;
int j;
for (j = 0; j < instance.numClasses(); j++) {
currentProb = getProbs(j, instance, 1);
if (Utils.gr(currentProb,maxProb)) {
maxIndex = j;
maxProb = currentProb;
}
}
return (double)maxIndex;
}
而getProbs函数关键代码如下: