コード例 #1
0
  public Map<Integer, AttributeValue> getAttributeValues(InstanceIndexer instanceIndexer)
      throws MLException {
    Map<Integer, AttributeValue> attributeValues = null;
    if (instanceIndexer.getAttributeName() != null) {

      AttributeDO[] attributeDOs = getAttributesByName(instanceIndexer.getAttributeName());
      AttributeDO[] classAttributes = getAttributesByName(Instances.CLASS_NAME);

      Map<Integer, AttributeValue> discreteValuesMap = new HashMap<Integer, AttributeValue>();

      for (int index = 0; index < attributeDOs.length; index++) {
        if (instanceIndexer.getIndexes().contains(index)) {
          String name = attributeDOs[index].getName();
          Integer value = attributeDOs[index].getValue();
          AttributeDO classAttributeDO = classAttributes[index];

          if (discreteValuesMap.containsKey(value)) {
            discreteValuesMap.put(
                value,
                discreteValuesMap
                    .get(value)
                    .incrementAttributeValueCount()
                    .insertOrIncrementClassifiedCountMap(classAttributeDO.getValue()));
          } else {
            discreteValuesMap.put(
                value,
                new AttributeValue(name, value, 1)
                    .insertOrIncrementClassifiedCountMap(classAttributeDO.getValue()));
          }
        }
      }
      attributeValues = discreteValuesMap;

      // bug fix : if there is only one type of instance attribute type, and hence only one entry in
      // map.
      if (attributeValues.size() == 1) {
        if (attributeValues.keySet().contains(1)) {
          discreteValuesMap.put(
              0, new AttributeValue(attributeValues.get(1).getAttributeName(), 0, 0));
        } else {
          discreteValuesMap.put(
              1, new AttributeValue(attributeValues.get(0).getAttributeName(), 1, 0));
        }
      }

    } else {
      throw new MLException(
          "No attribute name mentioned in Indexer, hence cannot provide attribute values !");
    }

    return attributeValues;
  }
コード例 #2
0
  public Map<Integer, AttributeValue> getAttributeValues(String attributeName) throws MLException {
    AttributeDO[] attributes = getAttributesByName(attributeName);
    Map<Integer, AttributeValue> discreteValuesMap = new HashMap<Integer, AttributeValue>();

    for (AttributeDO attribute : attributes) {
      String name = attribute.getName();
      Integer value = attribute.getValue();
      if (discreteValuesMap.containsKey(value))
        discreteValuesMap.put(value, discreteValuesMap.get(value).incrementAttributeValueCount());
      else discreteValuesMap.put(value, new AttributeValue(name, value, 1));
    }

    return discreteValuesMap;
  }