/** * Computes performance measures of a tree * * @param inst itemsets * @param smooth =true uses the smoothed models; otherwise uses the unsmoothed models * @return the performance measures * @exception Exception if something goes wrong */ public final Measures measures(MyDataset inst, boolean smooth) throws Exception { int i, numItemsets, count; double sd, y1[], y2[]; Measures measures = new Measures(); errors = this.errors(inst, smooth); numItemsets = errors.numItemsets - errors.missingItemsets; y1 = new double[numItemsets]; y2 = new double[numItemsets]; count = 0; for (i = 0; i <= inst.numItemsets() - 1; i++) { y1[count] = this.predict(inst.itemset(i), smooth); y2[count] = inst.itemset(i).getClassValue(); count++; } measures.correlation = M5.correlation(y1, y2, numItemsets); sd = M5.stdDev(inst.getClassIndex(), inst); if (sd > 0.0) { measures.meanAbsErr = errors.meanAbsErr; measures.meanSqrErr = errors.meanSqrErr; measures.type = 0; } else { if (numItemsets >= 1) { measures.type = 1; measures.meanAbsErr = errors.meanAbsErr; measures.meanSqrErr = errors.meanSqrErr; } else { measures.type = 2; measures.meanAbsErr = 0.0; measures.meanSqrErr = 0.0; } } return measures; }