Beispiel #1
0
  /**
   * 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;
  }