package hex.quantile;
import hex.Model;
import hex.ModelCategory;
import hex.ModelMetrics;
import water.H2O;
import water.Key;
public class QuantileModel extends Model<QuantileModel,QuantileModel.QuantileParameters,QuantileModel.QuantileOutput> {
public enum CombineMethod { INTERPOLATE, AVERAGE, LOW, HIGH }
public static class QuantileParameters extends Model.Parameters {
// Set of probabilities to compute
public double _probs[/*Q*/] = new double[]{0.001,0.01,0.1,0.25,0.333,0.50,0.667,0.75,0.9,0.99,0.999};
public CombineMethod _combine_method = CombineMethod.INTERPOLATE;
protected boolean defaultDropConsCols() { return false; }
public String algoName() { return "Quantiles"; }
public String fullName() { return "Quantiles"; }
public String javaName() { return QuantileModel.class.getName(); }
@Override public long progressUnits() { return train().numCols()*_probs.length; }
}
public static class QuantileOutput extends Model.Output {
public QuantileParameters _parameters; // Model parameters
public int _iterations; // Iterations executed
public double _quantiles[/*N*/][/*Q*/]; // Our N columns, Q quantiles reported
public QuantileOutput( Quantile b ) { super(b); }
@Override public ModelCategory getModelCategory() { return ModelCategory.Unknown; }
}
QuantileModel( Key selfKey, QuantileParameters parms, QuantileOutput output) { super(selfKey,parms,output); }
@Override
public ModelMetrics.MetricBuilder makeMetricBuilder(String[] domain) {
throw H2O.unimpl("No model metrics for Quantile.");
}
@Override protected double[] score0(double data[/*ncols*/], double preds[/*nclasses+1*/]) {
throw H2O.unimpl();
}
}