// public static double info_contattr(InstanceList data, Domain targetDomain, QuantitativeDomain
  // splitDomain) {
  public CondClassDistribution info_contattr(Categorizer visitor) {

    List<Instance> data = visitor.getSortedInstances();
    QuantitativeDomain splitDomain = visitor.getSplitDomain();
    Domain targetDomain = insts_by_target.getClassDomain();
    String targetAttr = targetDomain.getFReferenceName();

    CondClassDistribution instances_by_attr = new CondClassDistribution(splitDomain, targetDomain);
    instances_by_attr.setTotal(data.size());

    int index = 0;
    int split_index = 0;
    Object attr_key = splitDomain.getCategory(split_index);
    for (Instance i : data) {

      if (index == splitDomain.getSplit(split_index).getIndex() + 1) {
        attr_key = splitDomain.getCategory(split_index + 1);
        split_index++;
      }
      Object targetKey = i.getAttrValue(targetAttr);
      instances_by_attr.change(attr_key, targetKey, i.getWeight()); // +1

      index++;
    }

    return instances_by_attr;
    //		double sum = calc_info_attr(instances_by_attr);
    //		return sum;

  }
  public double getEval_cont(Domain attr_domain) {

    double attribute_eval = 0.0d;
    QuantitativeDomain trialDomain = QuantitativeDomain.createFromDomain(attr_domain);

    Categorizer visitor = new Categorizer(insts_by_target);
    visitor.findSplits(trialDomain);

    //	trial domain is modified
    if (trialDomain.getNumIndices() > 1) {
      CondClassDistribution insts_by_attr =
          info_contattr(visitor); // .getSortedInstances(), trialDomain);
      attribute_eval = data_eval - Entropy.calc_info_attr(insts_by_attr);
    }
    domain = trialDomain;
    sorted_instances = visitor.getSortedInstances();
    return multiplier * attribute_eval;
  }