-
Notifications
You must be signed in to change notification settings - Fork 0
Metrics d2pinball score
Development build. This page describes
main, not a released package. The latest published Lodestar.Metrics is 0.3.0 — read its documentation.
The fraction of pinball loss explained — sklearn.metrics.d2_pinball_score.
public static double Score(ReadOnlySpan<double> yTrue, ReadOnlySpan<double> yPred, double alpha = 0.5, int outputCount = 1, ReadOnlySpan<double> sampleWeight = default, ReadOnlySpan<double> outputWeights = default, ZeroDivision zeroDivision = ZeroDivision.NaN)Parameters — yTrue and yPred are the true and predicted values, row-major when there is more
than one output. alpha is the quantile being scored, in [0, 1], 0.5 by default. outputCount
is how many outputs each row holds. sampleWeight is one weight per row, not per value.
outputWeights is a weight per output, multioutput=[…]; omit it for multioutput="uniform_average".
zeroDivision decides the answer for fewer than two samples.
Returns — double. 1 for a perfect prediction, 0 for one no better than the best constant,
and negative below that. A column whose truth never varies contributes 0.
Exceptions — ArgumentException when a length disagrees with the shape, the input is empty, or
it holds a non-finite value. ArgumentOutOfRangeException when outputCount is below one, or
alpha is outside [0, 1] — NaN included. UndefinedMetricException when there are fewer than
two samples and zeroDivision is ZeroDivision.Throw.
Example — the same four samples read at three quantiles.
using Lodestar.Metrics;
double[] truth = [1.0, 2.0, 3.0, 4.0];
double[] predicted = [1.5, 2.5, 2.0, 4.5];
double median = D2Pinball.Score(truth, predicted); // => 0.375using Lodestar.Metrics;
double[] truth = [1.0, 2.0, 3.0, 4.0];
double[] predicted = [1.5, 2.5, 2.0, 4.5];
double upper = D2Pinball.Score(truth, predicted, alpha: 0.9); // => -0.75…The upper quantile scores below zero: these predictions are a decent median and a poor 90th percentile, which is the distinction the metric exists to draw.
Remarks — the denominator is the loss of predicting the weighted quantile of the truth at the
same alpha. Which of the two candidate order statistics that quantile takes cannot be observed
here: the two differ exactly where the quantile is ambiguous, and the pinball loss is flat across
that interval — measured over four fixtures at five alphas each, both readings give the same score
every time.
Applies to — net10.0, netstandard2.0.
See also — D2Pinball.PerOutput,
D2AbsoluteError.Score, PinballLoss.Score,
the Python equivalence table.
- 0001-target-framework
- 0002-unicode-comparison-unit
- 0003-provenance-and-licensing
- 0004-levenshtein-myers-backlog
- 0005-hamming-jellyfish-divergence
- 0006-ratcliff-autojunk
- 0007-metaphone-scope
- 0008-italian-enza-nltk-divergence
- 0009-sample-consumes-a-local-feed
- 0010-stop-word-list-provenance
- 0011-persistence-format
- 0012-per-package-versioning
- 0013-sentencepiece-parity-scope
- 0014-precompiled-normalizer
- 0015-sonar-rules-in-the-build
- 0016-metrics-package-placement
- 0017-bpe-parity-scope
- 0018-multiclass-roc-auc-parallelism-is-opt-in
- 0019-the-net-analysers-run-in-the-build-too
- 0020-normalize-is-a-projection-not-a-parameter
- 0021-multioutput-is-a-method-not-an-enum
- 0022-added-token-matching-flags
- 0023-byte-level-decode-substitutes
- 0024-weighted-median-averages-within-scikit-learns-epsilon
- 0025-quickselect-replaces-a-full-sort-for-the-median
- 0026-r2-and-explainedvariance-split-their-undefined-cases-differently
- 0027-r2-and-explainedvariance-vectorize-only-a-single-output
- 0028-log1p-is-kahans-identity-not-math-log-1-plus-x
- 0029-balanced-accuracy-adjusted-is-left-to-ieee-754-at-the-edge
- 0030-cohen-kappa-keeps-scikit-learns-expected-matrix-orientation
- 0031-nosamplecorrect-mirrors-numpys-float64-upcast
- 0032-fbeta-substitutes-tp-predicted-and-support-algebraically
- 0033-compensated-sum-is-neumaiers-variant
- 0034-dropout-is-refused-for-want-of-a-user
- 0035-a-null-pre-split-is-removed-with-invert-not-isolated
- 0036-a-member-may-ship-without-an-oracle-if-it-says-so
- 0037-the-guards-run-before-the-commit
- 0038-the-gate-confronts-an-exception-tag-with-the-page-that-documents-it
- 0039-mutual-information-returns-zero-on-an-empty-input
- 0040-a-curve-is-a-sealed-class-per-curve
- 0041-one-sample-file-per-public-class
- 0042-phonetic-encoders-refuse-a-null-word
- 0043-the-equality-table-is-sized-to-the-pattern
- 0044-compression-belongs-to-the-caller
- 0045-a-console-call-carries-its-reason-on-the-line
- 0046-check-adr-immutable-runs-in-ci-only
- 0047-one-gate-per-kernel-not-one-per-alphabet
- 0048-the-gate-depends-on-the-kernel-and-the-alphabet
- 0049-two-gates-per-kernel-tested-where-the-width-is-known
- 0050-the-sentencepiece-bpe-lineage-stays-a-bpe-model
- benchmark_latest
- decisions
- equivalence
- matplotlib
- migration
- nightly_run
- numpy
- pandas
- performance
- pytorch
- seaborn
- sklearn
- statsmodels