
weka.core.stats.ArffSummaryNumericMetric Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of distributedWekaBase Show documentation
Show all versions of distributedWekaBase Show documentation
This package provides generic configuration class and distributed map/reduce style tasks for Weka
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
/*
* ArffSummaryNumericMetric
* Copyright (C) 2014 University of Waikato, Hamilton, New Zealand
*
*/
package weka.core.stats;
import weka.core.Attribute;
import weka.core.Utils;
/**
* An enumerated utility type for the various numeric summary metrics that are
* computed.
*
* @author Mark Hall (mhall{[at]}pentaho{[dot]}com)
* @version $Revision: 10929 $
*/
public enum ArffSummaryNumericMetric {
COUNT("count") {
@Override
public double valueFromAttribute(Attribute att) {
String value = att.value(COUNT.ordinal());
return toValue(value, toString());
}
@Override
public String makeAttributeValue(double value) {
return toString() + value;
}
},
SUM("sum") {
@Override
public double valueFromAttribute(Attribute att) {
String value = att.value(SUM.ordinal());
return toValue(value, toString());
}
@Override
public String makeAttributeValue(double value) {
return toString() + value;
}
},
SUMSQ("sumSq") {
@Override
public double valueFromAttribute(Attribute att) {
String value = att.value(SUMSQ.ordinal());
return toValue(value, toString());
}
@Override
public String makeAttributeValue(double value) {
return toString() + value;
}
},
MIN("min") {
@Override
public double valueFromAttribute(Attribute att) {
String value = att.value(MIN.ordinal());
return toValue(value, toString());
}
@Override
public String makeAttributeValue(double value) {
return toString() + value;
}
},
MAX("max") {
@Override
public double valueFromAttribute(Attribute att) {
String value = att.value(MAX.ordinal());
return toValue(value, toString());
}
@Override
public String makeAttributeValue(double value) {
return toString() + value;
}
},
MISSING("missing") {
@Override
public double valueFromAttribute(Attribute att) {
String value = att.value(MISSING.ordinal());
return toValue(value, toString());
}
@Override
public String makeAttributeValue(double value) {
return toString() + value;
}
},
MEAN("mean") {
@Override
public double valueFromAttribute(Attribute att) {
String value = att.value(MEAN.ordinal());
return toValue(value, toString());
}
@Override
public String makeAttributeValue(double value) {
return toString() + value;
}
},
STDDEV("stdDev") {
@Override
public double valueFromAttribute(Attribute att) {
String value = att.value(STDDEV.ordinal());
return toValue(value, toString());
}
@Override
public String makeAttributeValue(double value) {
return toString() + value;
}
},
FIRSTQUARTILE("firstQuartile") {
@Override
public double valueFromAttribute(Attribute att) {
if (FIRSTQUARTILE.ordinal() > att.numValues() - 1) {
return Utils.missingValue();
}
String value = att.value(FIRSTQUARTILE.ordinal());
return toValue(value, toString());
}
@Override
public String makeAttributeValue(double value) {
return toString() + value;
}
},
MEDIAN("median") {
@Override
public double valueFromAttribute(Attribute att) {
if (MEDIAN.ordinal() > att.numValues() - 1) {
return Utils.missingValue();
}
String value = att.value(MEDIAN.ordinal());
return toValue(value, toString());
}
@Override
public String makeAttributeValue(double value) {
return toString() + value;
}
},
THIRDQUARTILE("thirdQuartile") {
@Override
public double valueFromAttribute(Attribute att) {
if (THIRDQUARTILE.ordinal() > att.numValues() - 1) {
return Utils.missingValue();
}
String value = att.value(THIRDQUARTILE.ordinal());
return toValue(value, toString());
}
@Override
public String makeAttributeValue(double value) {
return toString() + value;
}
};
private final String m_name;
ArffSummaryNumericMetric(String name) {
m_name = name + "_";
}
/**
* Extracts the value of this particular metric from the summary Attribute
*
* @param att the summary attribute to extract the metric from
* @return the value of this particular metric
*/
public abstract double valueFromAttribute(Attribute att);
/**
* Makes the internal encoded version of this metric given it's value as a
* double
*
* @param value the value of the metric
* @return the internal representation of this metric
*/
public abstract String makeAttributeValue(double value);
@Override
public String toString() {
return m_name;
}
/**
* Extracts the value of the metric from the string representation
*
* @param v the string representation
* @param name the name of the attribute that the metric belongs to
* @return the value of the metric
*/
public double toValue(String v, String name) {
v = v.replace(name, "");
return Double.parseDouble(v);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy