-
Notifications
You must be signed in to change notification settings - Fork 0
Metrics recall score
Development build. This page describes
main, not a released package. The latest published Lodestar.Metrics is 0.3.0 — read its documentation.
True positives over the true size of the class, reduced to one number by average.
public static double Score(ConfusionMatrix cm, Averaging average = Averaging.Binary, int posLabel = 1, ZeroDivision zeroDivision = ZeroDivision.Zero)
public static double Score(ReadOnlySpan<int> yTrue, ReadOnlySpan<int> yPred, Averaging average = Averaging.Binary, int posLabel = 1, ZeroDivision zeroDivision = ZeroDivision.Zero, ReadOnlySpan<int> labels = default, ReadOnlySpan<double> sampleWeight = default)Parameters — cm is a matrix already counted, or pass yTrue and yPred. average is how
the
per-class scores are reduced, Averaging.Binary by default. posLabel is the class reported
under
Averaging.Binary. zeroDivision decides what comes back when the class has no true samples at
all. labels fixes the label set and its order, and sampleWeight weights the samples.
Returns — double in [0, 1], larger meaning fewer misses.
Exceptions — ArgumentNullException when cm is null; ArgumentException when
Averaging.Binary is used on more than two classes, or posLabel does not occur;
UndefinedMetricException when the class has no true samples and zeroDivision is
ZeroDivision.Throw.
Example — four messages were spam and the filter caught two.
using Lodestar.Metrics;
int[] yTrue = [1, 1, 1, 1, 0, 0, 0, 0];
int[] yPred = [1, 1, 0, 0, 1, 0, 0, 0];
double recall = Recall.Score(yTrue, yPred); // => 0.5Remarks — report this when a miss is the expensive mistake: an undetected tumour, a fraud that went through, a security alert nobody raised. It answers "of the things that were really there, how many did we get", and says nothing about how much noise it made getting them.
Which is the mirror trap of precision's: recall alone is trivially gamed too. Flag everything
and
recall is 1.0. The pair is the claim; either one on its own is a half-sentence.
Recall is also the metric the other pages here are built out of: BalancedAccuracy.Score is the
macro average of per-class recall, and a Normalization.True confusion matrix has per-class
recall
on its diagonal. If you are already looking at one of those, you have this.
The undefined case is a class with no true samples — the denominator is its support. That returns
0.0 by default, which is scikit-learn's value, and ZeroDivision.NaN is what keeps such a class
out of a macro average instead of scoring it zero.
Applies to — net10.0, netstandard2.0.
See also — Recall.PerClass, Precision.Score, F1.Score, BalancedAccuracy.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