/** * Copy constructor, creates a new {@code Percentile} identical * to the {@code original} * * @param original the {@code Percentile} instance to copy * @throws NullArgumentException if original is null */ public Percentile(final Percentile original) throws NullArgumentException { MathUtils.checkNotNull(original); estimationType = original.getEstimationType(); nanStrategy = original.getNaNStrategy(); kthSelector = original.getKthSelector(); setData(original.getDataRef()); if (original.cachedPivots != null) { System.arraycopy(original.cachedPivots, 0, cachedPivots, 0, original.cachedPivots.length); } setQuantile(original.quantile); }
_percentile.setData(historyMetricValues.doubleArray());
@Override public double doublePercentile(int percentile){ if(this.size == 0){ throw new IllegalStateException(); } double[] data = new double[this.size]; System.arraycopy(this.values, 0, data, 0, data.length); Arrays.sort(data); Percentile statistic = new Percentile(); statistic.setData(data); return statistic.evaluate(percentile); } }
curDimensionValues[i] = metrics.get(i)[j]; p.setData(curDimensionValues); bounds[j][0] = p.evaluate(trimPct); bounds[j][1] = p.evaluate(100 - trimPct);
@Override public Object doWork(Object first, Object second) throws IOException{ if(null == first){ throw new IOException(String.format(Locale.ROOT,"Invalid expression %s - null found for the first value",toExpression(constructingFactory))); } if(null == second){ throw new IOException(String.format(Locale.ROOT,"Invalid expression %s - null found for the second value",toExpression(constructingFactory))); } if(!(first instanceof List<?>)) { throw new IOException(String.format(Locale.ROOT,"Invalid expression %s - found type %s for the first value, expecting a List",toExpression(constructingFactory), first.getClass().getSimpleName())); } if((second instanceof Number)) { Percentile percentile = new Percentile(); percentile.setData(((List<?>) first).stream().mapToDouble(value -> ((Number) value).doubleValue()).toArray()); return percentile.evaluate(((Number) second).doubleValue()); } else if(second instanceof List){ Percentile percentile = new Percentile(); percentile.setData(((List<?>) first).stream().mapToDouble(value -> ((Number) value).doubleValue()).toArray()); List<Number> values = (List<Number>) second; List<Number> percentiles = new ArrayList(); for(Number value : values) { percentiles.add(percentile.evaluate(value.doubleValue())); } return percentiles; } else { throw new IOException(String.format(Locale.ROOT,"Invalid expression %s - found type %s for the second value, expecting a number or a numeric array",toExpression(constructingFactory), first.getClass().getSimpleName())); } }
/** * @return an array of values to split the numeric feature's values on when * building candidate splits. When input size is <= MAX_NUMERIC_SPLITS + 1, it will * return the averages between success values as split points. When larger, it will * return MAX_NUMERIC_SPLITS approximate percentiles through the data. */ private static double[] chooseNumericSplitPoints(double[] values) { if (values.length <= 1) { return values; } if (values.length <= MAX_NUMERIC_SPLITS + 1) { double[] splitPoints = new double[values.length - 1]; for (int i = 1; i < values.length; i++) { splitPoints[i-1] = (values[i] + values[i-1]) / 2.0; } return splitPoints; } Percentile distribution = new Percentile(); distribution.setData(values); double[] percentiles = new double[MAX_NUMERIC_SPLITS]; for (int i = 0 ; i < percentiles.length; i++) { double p = 100.0 * ((i + 1.0) / (MAX_NUMERIC_SPLITS + 1.0)); percentiles[i] = distribution.evaluate(p); } return percentiles; }
/** * @return an array of values to split the numeric feature's values on when * building candidate splits. When input size is <= MAX_NUMERIC_SPLITS + 1, it will * return the averages between success values as split points. When larger, it will * return MAX_NUMERIC_SPLITS approximate percentiles through the data. */ private static double[] chooseNumericSplitPoints(double[] values) { if (values.length <= 1) { return values; } if (values.length <= MAX_NUMERIC_SPLITS + 1) { double[] splitPoints = new double[values.length - 1]; for (int i = 1; i < values.length; i++) { splitPoints[i-1] = (values[i] + values[i-1]) / 2.0; } return splitPoints; } Percentile distribution = new Percentile(); distribution.setData(values); double[] percentiles = new double[MAX_NUMERIC_SPLITS]; for (int i = 0 ; i < percentiles.length; i++) { double p = 100.0 * ((i + 1.0) / (MAX_NUMERIC_SPLITS + 1.0)); percentiles[i] = distribution.evaluate(p); } return percentiles; }
double[] curBoundaries = new double[k]; Percentile pCalc = new Percentile(); pCalc.setData(colValues); for (int i = 0; i < k; i++) { curBoundaries[i] = pCalc.evaluate(boundaryPercentiles[i]);
@Override public void consume(List<Datum> records) { List<DatumWithNorm> toClassify = new ArrayList<>(); double[] scores = new double[records.size()]; for(int i = 0; i < records.size(); i++) { Datum d = records.get(i); DatumWithNorm dwn = new DatumWithNorm(d); toClassify.add(dwn); scores[i] = dwn.getNorm(); } Percentile pCalc = new Percentile().withNaNStrategy(NaNStrategy.MAXIMAL); pCalc.setData(scores); double cutoff = pCalc.evaluate(scores, targetPercentile * 100); log.debug("{} Percentile Cutoff: {}", targetPercentile, cutoff); log.debug("Median: {}", pCalc.evaluate(50)); log.debug("Max: {}", pCalc.evaluate(100)); for(DatumWithNorm dwn : toClassify) { results.add(new OutlierClassificationResult(dwn.getDatum(), dwn.getNorm() >= cutoff || dwn.getNorm().isInfinite())); } }
percentile.setData(values); log.info("Normalising percentiles of {} over {} subjects", singleValueField.getLabel(), percentileSubjects.size()); log.info("Min value: {}", StatUtils.min(values));
/** * Copy constructor, creates a new {@code Percentile} identical * to the {@code original} * * @param original the {@code Percentile} instance to copy * @throws NullArgumentException if original is null */ public Percentile(final Percentile original) throws NullArgumentException { MathUtils.checkNotNull(original); estimationType = original.getEstimationType(); nanStrategy = original.getNaNStrategy(); kthSelector = original.getKthSelector(); setData(original.getDataRef()); if (original.cachedPivots != null) { System.arraycopy(original.cachedPivots, 0, cachedPivots, 0, original.cachedPivots.length); } setQuantile(original.quantile); }
/** * Copy constructor, creates a new {@code Percentile} identical * to the {@code original} * * @param original the {@code Percentile} instance to copy * @throws NullArgumentException if original is null */ public Percentile(final Percentile original) throws NullArgumentException { MathUtils.checkNotNull(original); estimationType = original.getEstimationType(); nanStrategy = original.getNaNStrategy(); kthSelector = original.getKthSelector(); setData(original.getDataRef()); if (original.cachedPivots != null) { System.arraycopy(original.cachedPivots, 0, cachedPivots, 0, original.cachedPivots.length); } setQuantile(original.quantile); }
@Test public void testRandomGenerator() { Percentile p = new Percentile(35); p.setData(new double[]{35}); System.out.println(p.evaluate(5)); Map<String, Object> data = new HashMap<String, Object>(); data.put(SimulationConstants.DISTRIBUTION_TYPE, "random"); data.put(SimulationConstants.MIN, 500L); data.put(SimulationConstants.MAX, 40000L); TimeGenerator generator = TimeGeneratorFactory.newTimeGenerator(data); assertNotNull(generator); assertTrue(generator instanceof RandomTimeGenerator); System.out.println(generator.generateTime()); System.out.println(generator.generateTime()); System.out.println(generator.generateTime()); System.out.println(generator.generateTime()); } }
@Test public void testRandomGenerator() { Percentile p = new Percentile(35); p.setData(new double[]{35}); System.out.println(p.evaluate(5)); Map<String, Object> data = new HashMap<String, Object>(); data.put(SimulationConstants.DISTRIBUTION_TYPE, "random"); data.put(SimulationConstants.MIN, 500L); data.put(SimulationConstants.MAX, 40000L); TimeGenerator generator = TimeGeneratorFactory.newTimeGenerator(data); assertNotNull(generator); assertTrue(generator instanceof RandomTimeGenerator); System.out.println(generator.generateTime()); System.out.println(generator.generateTime()); System.out.println(generator.generateTime()); System.out.println(generator.generateTime()); } }
final double max = dtimes[dtimes.length - 1]; final Percentile percentile = new Percentile(); percentile.setData(dtimes); final double p50 = percentile.evaluate(50); final double p90 = percentile.evaluate(90);
percentile.setData(inputArray); result.setValue(percentile.evaluate(val));
_percentile.setData(historyMetricValues.doubleArray());