Exemplo n.º 1
0
 @Override
 public boolean toHTML(StringBuilder sb) {
   if (classification) {
     DocGen.HTML.section(sb, "Confusion Matrix");
     if (cm == null) return true;
     printConfusionMatrix(sb, cm, domain, true);
   } else {
     DocGen.HTML.section(sb, "Mean Squared Error");
     if (mse == Double.NaN) return true;
     DocGen.HTML.arrayHead(sb);
     sb.append("<tr class='warning'><td>" + mse + "</td></tr>");
     DocGen.HTML.arrayTail(sb);
   }
   return true;
 }
Exemplo n.º 2
0
 @Override
 public boolean toHTML(StringBuilder sb) {
   Job jjob = Job.findJob(job_key);
   DRFModel m = UKV.get(jjob.dest());
   if (m != null) m.generateHTML("DRF Model", sb);
   else DocGen.HTML.paragraph(sb, "Pending...");
   return true;
 }
Exemplo n.º 3
0
 @Override
 public boolean toHTML(StringBuilder sb) {
   DocGen.HTML.section(
       sb,
       "Export done. Key '"
           + src_key.toString()
           + "' was written to "
           + (_local && H2O.CLOUD.size() > 1 ? H2O.SELF_ADDRESS + ":" : "")
           + path.toString());
   return true;
 }
Exemplo n.º 4
0
  @Override
  public boolean toHTML(StringBuilder sb) {
    DocGen.HTML.title(sb, "Confusion Matrix");
    DocGen.HTML.arrayHead(sb);
    sb.append("<tr>");
    sb.append("<th>Actual \\ Predicted</th>");
    for (int i = 0; i < domain.length; i++) sb.append("<th>").append(domain[i]).append("</th>");
    sb.append("<th>Error</th>");
    sb.append("</tr>\n");

    long tots[] = new long[cm.length];
    long errs = 0, nrows = 0;
    for (int i = 0; i < domain.length; i++) {
      sb.append("<tr>");
      sb.append("<th>").append(domain[i]).append("</th>");
      long sum = 0;
      for (int j = 0; j < domain.length; j++) {
        sum += cm[i][j];
        tots[j] += cm[i][j];
        sb.append(i == j ? "<td style='background-color:LightGreen'>" : "<td>")
            .append(cm[i][j])
            .append("</td>");
      }
      long err = sum - cm[i][i];
      errs += err;
      nrows += sum;
      sb.append(String.format("<td>%5.3f = %d / %d</td>", (double) err / sum, err, sum));
      sb.append("</tr>\n");
    }

    sb.append("<tr>");
    sb.append("<th>Totals</th>");
    for (int i = 0; i < domain.length; i++) sb.append("<td>").append(tots[i]).append("</td>");
    sb.append(String.format("<th>%5.3f = %d / %d</th>", (double) errs / nrows, errs, nrows));
    sb.append("</tr>\n");
    DocGen.HTML.arrayTail(sb);

    DocGen.HTML.section(sb, "Summary");
    DocGen.HTML.listHead(sb);
    DocGen.HTML.listBullet(sb, "ntrees", ntrees.value().toString(), 0);
    DocGen.HTML.listBullet(sb, "mtrys", Integer.toString(mtrys), 0);
    DocGen.HTML.listTail(sb);

    return true;
  }
Exemplo n.º 5
0
 @Override
 public boolean toHTML(StringBuilder sb) {
   DocGen.HTML.paragraph(sb, "All keys are now unlocked.");
   return true;
 }
Exemplo n.º 6
0
    @Override
    public boolean toHTML(StringBuilder sb) {
      if (jobs != null) {
        DocGen.HTML.arrayHead(sb);
        sb.append("<tr class='warning'>");
        ArrayList<Argument> args = jobs[0].arguments();
        // Filter some keys to simplify UI
        args = (ArrayList<Argument>) args.clone();
        filter(
            args,
            "destination_key",
            "source",
            "cols",
            "ignored_cols_by_name",
            "response",
            "classification",
            "validation");
        for (int i = 0; i < args.size(); i++)
          sb.append("<td><b>").append(args.get(i)._name).append("</b></td>");
        sb.append("<td><b>").append("run time").append("</b></td>");
        String perf = jobs[0].speedDescription();
        if (perf != null) sb.append("<td><b>").append(perf).append("</b></td>");
        sb.append("<td><b>").append("model key").append("</b></td>");
        sb.append("<td><b>").append("prediction error").append("</b></td>");
        sb.append("<td><b>").append("F1 score").append("</b></td>");
        sb.append("</tr>");

        ArrayList<JobInfo> infos = new ArrayList<JobInfo>();
        for (Job job : jobs) {
          JobInfo info = new JobInfo();
          info._job = job;
          Object value = UKV.get(job.destination_key);
          info._model = value instanceof Model ? (Model) value : null;
          if (info._model != null) info._cm = info._model.cm();
          if (info._cm != null) info._error = info._cm.err();
          infos.add(info);
        }
        Collections.sort(
            infos,
            new Comparator<JobInfo>() {
              @Override
              public int compare(JobInfo a, JobInfo b) {
                return Double.compare(a._error, b._error);
              }
            });

        for (JobInfo info : infos) {
          sb.append("<tr>");
          for (Argument a : args) {
            try {
              Object value = a._field.get(info._job);
              String s;
              if (value instanceof int[]) s = Utils.sampleToString((int[]) value, 20);
              else s = "" + value;
              sb.append("<td>").append(s).append("</td>");
            } catch (Exception e) {
              throw new RuntimeException(e);
            }
          }
          String runTime = "Pending", speed = "";
          if (info._job.start_time != 0) {
            runTime = PrettyPrint.msecs(info._job.runTimeMs(), true);
            speed = perf != null ? PrettyPrint.msecs(info._job.speedValue(), true) : "";
          }
          sb.append("<td>").append(runTime).append("</td>");
          if (perf != null) sb.append("<td>").append(speed).append("</td>");

          String link = info._job.destination_key.toString();
          if (info._job.start_time != 0 && DKV.get(info._job.destination_key) != null) {
            if (info._model instanceof GBMModel)
              link = GBMModelView.link(link, info._job.destination_key);
            else if (info._model instanceof NeuralNetModel)
              link = NeuralNetProgress.link(info._job.self(), info._job.destination_key, link);
            if (info._model instanceof KMeans2Model)
              link = KMeans2ModelView.link(link, info._job.destination_key);
            else link = Inspect.link(link, info._job.destination_key);
          }
          sb.append("<td>").append(link).append("</td>");

          String pct = "", f1 = "";
          if (info._cm != null) {
            pct = String.format("%.2f", 100 * info._error) + "%";
            if (info._cm._arr.length == 2)
              f1 = String.format("%.2f", info._cm.precisionAndRecall());
          }
          sb.append("<td><b>").append(pct).append("</b></td>");
          sb.append("<td><b>").append(f1).append("</b></td>");
          sb.append("</tr>");
        }
        DocGen.HTML.arrayTail(sb);
      }
      return true;
    }