Exemplo n.º 1
0
  private NodeScoreDistribution createNodeScoreDistribution(Node node, double missingValuePenalty) {
    BiMap<String, Node> entityRegistry = getEntityRegistry();

    NodeScoreDistribution result = new NodeScoreDistribution(entityRegistry, node);

    if (!node.hasScoreDistributions()) {
      return result;
    }

    List<ScoreDistribution> scoreDistributions = node.getScoreDistributions();

    double sum = 0;

    for (int i = 0, max = scoreDistributions.size(); i < max; i++) {
      ScoreDistribution scoreDistribution = scoreDistributions.get(i);

      Double recordCount = scoreDistribution.getRecordCount();
      if (recordCount == null) {
        throw new InvalidFeatureException(scoreDistribution);
      }

      sum += recordCount;
    } // End for

    for (int i = 0, max = scoreDistributions.size(); i < max; i++) {
      ScoreDistribution scoreDistribution = scoreDistributions.get(i);

      Double probability = scoreDistribution.getProbability();
      if (probability == null) {
        Double recordCount = scoreDistribution.getRecordCount();

        probability = (recordCount / sum);
      }

      result.put(scoreDistribution.getValue(), probability);

      Double confidence = scoreDistribution.getConfidence();
      if (confidence != null) {
        result.putConfidence(scoreDistribution.getValue(), confidence * missingValuePenalty);
      }
    }

    return result;
  }