kwcoco.metrics.drawing module¶
-
kwcoco.metrics.drawing.
draw_roc
(roc_info, prefix='', fnum=1, **kw)[source]¶ NOTE: There needs to be enough negative examples for using ROC to make any sense!
Example
>>> # xdoctest: +REQUIRES(module:kwplot) >>> from kwcoco.metrics import DetectionMetrics >>> dmet = DetectionMetrics.demo( >>> nimgs=100, nboxes=(0, 30), n_fp=(0, 1), nclasses=3, >>> box_noise=0.00, cls_noise=.0, score_noise=1.0) >>> dmet.true_detections(0).data >>> cfsn_vecs = dmet.confusion_vectors(compat='mutex', prioritize='iou', bias=0) >>> print(cfsn_vecs.data._pandas().sort_values('score')) >>> classes = cfsn_vecs.classes >>> roc_info = ub.peek(cfsn_vecs.binarize_ovr().measures()['perclass'].values()) >>> # xdoctest: +REQUIRES(--show) >>> import kwplot >>> kwplot.autompl() >>> draw_roc(roc_info) >>> kwplot.show_if_requested()
-
kwcoco.metrics.drawing.
draw_perclass_roc
(cx_to_rocinfo, classes=None, prefix='', fnum=1, fp_axis='count', **kw)[source]¶ fp_axis can be count or rate
cx_to_rocinfo = roc_perclass
-
kwcoco.metrics.drawing.
draw_perclass_prcurve
(cx_to_peritem, classes=None, prefix='', fnum=1, **kw)[source]¶ Example
>>> # xdoctest: +REQUIRES(module:kwplot) >>> from kwcoco.metrics import DetectionMetrics >>> dmet = DetectionMetrics.demo( >>> nimgs=10, nboxes=(0, 10), n_fp=(0, 1), nclasses=3) >>> cfsn_vecs = dmet.confusion_vectors() >>> classes = cfsn_vecs.classes >>> cx_to_peritem = cfsn_vecs.binarize_ovr().measures()['perclass'] >>> import kwplot >>> kwplot.autompl() >>> draw_perclass_prcurve(cx_to_peritem, classes) >>> # xdoctest: +REQUIRES(--show) >>> kwplot.show_if_requested()
-
kwcoco.metrics.drawing.
draw_perclass_thresholds
(cx_to_peritem, key='mcc', classes=None, prefix='', fnum=1, **kw)[source]¶ Notes
Each category is inspected independently of one another, there is no notion of confusion.
Example
>>> # xdoctest: +REQUIRES(module:kwplot) >>> from kwcoco.metrics.drawing import * # NOQA >>> from kwcoco.metrics import ConfusionVectors >>> cfsn_vecs = ConfusionVectors.demo() >>> classes = cfsn_vecs.classes >>> ovr_cfsn = cfsn_vecs.binarize_ovr(keyby='name') >>> cx_to_peritem = ovr_cfsn.measures()['perclass'] >>> import kwplot >>> kwplot.autompl() >>> key = 'mcc' >>> draw_perclass_thresholds(cx_to_peritem, key, classes) >>> # xdoctest: +REQUIRES(--show) >>> kwplot.show_if_requested()
-
kwcoco.metrics.drawing.
draw_prcurve
(peritem, prefix='', fnum=1, **kw)[source]¶ TODO: rename to draw prcurve. Just draws a single pr curve.
Example
>>> # xdoctest: +REQUIRES(module:kwplot) >>> from kwcoco.metrics import DetectionMetrics >>> dmet = DetectionMetrics.demo( >>> nimgs=10, nboxes=(0, 10), n_fp=(0, 1), nclasses=3) >>> cfsn_vecs = dmet.confusion_vectors()
>>> classes = cfsn_vecs.classes >>> peritem = cfsn_vecs.binarize_peritem().measures() >>> import kwplot >>> kwplot.autompl() >>> draw_prcurve(peritem) >>> # xdoctest: +REQUIRES(--show) >>> kwplot.show_if_requested()
-
kwcoco.metrics.drawing.
draw_threshold_curves
(info, keys=None, prefix='', fnum=1, **kw)[source]¶ Example
>>> # xdoctest: +REQUIRES(module:kwplot) >>> import sys, ubelt >>> sys.path.append(ubelt.expandpath('~/code/kwcoco')) >>> from kwcoco.metrics.drawing import * # NOQA >>> from kwcoco.metrics import DetectionMetrics >>> dmet = DetectionMetrics.demo( >>> nimgs=10, nboxes=(0, 10), n_fp=(0, 1), nclasses=3) >>> cfsn_vecs = dmet.confusion_vectors() >>> info = cfsn_vecs.binarize_peritem().measures() >>> keys = None >>> import kwplot >>> kwplot.autompl() >>> draw_threshold_curves(info, keys) >>> # xdoctest: +REQUIRES(--show) >>> kwplot.show_if_requested()