Skip to main content

baycomp

Baycomp is a library for Bayesian comparison of classifiers.

Functions compare two classifiers on one or on multiple data sets. They compute three probabilities: the probability that the first classifier has higher scores than the second, the probability that differences are within the region of practical equivalence (rope), or that the second classifier has higher scores. We will refer to this probabilities as p_left, p_rope and p_right. If the argument rope is omitted (or set to zero), functions return only p_left and p_right.

The region of practical equivalence (rope) is specified by the caller and should correspond to what is "equivalent" in practice; for instance, classification accuracies that differ by less than 0.5 may be called equivalent.

Similarly, whether higher scores are better or worse depends upon the type of the score.

The library can also plot the posterior distributions.

The library can be used in three ways.

  1. Two shortcut functions can be used for comparison on single and on multiple data sets. If nbc and j48 contain a list of average classification accuracies of naive Bayesian classifier and J48 on a collection of data sets, we can call

     >>> two_on_multiple(nbc, j48, rope=1)
     (0.23124, 0.00666, 0.7621)
    

    (Actual results may differ due to Monte Carlo sampling.)

    With some additional arguments, the function can also plot the posterior distribution from which these probabilities came.

  2. Tests are packed into test classes. The above call is equivalent to

     >>> SignedRankTest.probs(nbc, j48, rope=1)
     (0.23124, 0.00666, 0.7621)
    

    and to get a plot, we call

     >>> SignedRankTest.plot(nbc, j48, rope=1, names=("nbc", "j48"))
    

    To switch to another test, use another class::

     >>> SignTest.probs(nbc, j48, rope=1)
     (0.26508, 0.13274, 0.60218)
    
  3. Finally, we can construct and query sampled posterior distributions.

     >>> posterior = SignedRankTest(nbc, j48, rope=0.5)
     >>> posterior.probs()
     (0.23124, 0.00666, 0.7621)
     >>> posterior.plot(names=("nbc", "j48"))
    

Installation

Install from PyPI:

pip install baycomp

Documentation

User documentation is available on https://baycomp.readthedocs.io/.

A detailed description of the implemented methods is available in Time for a Change: a Tutorial for Comparing Multiple Classifiers Through Bayesian Analysis, Alessio Benavoli, Giorgio Corani, Janez Demšar, Marco Zaffalon. Journal of Machine Learning Research, 18 (2017) 1-36.

Metadata

Release files for baycomp 1.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for baycomp 1.0.3
File Size Uploaded
baycomp-1.0.3.tar.gz 15.9 kB Details

Release files / baycomp-1.0.3.tar.gz

Download URL baycomp-1.0.3.tar.gz
Size 15.9 kB
Tags Source
SHA-256 checksum
How to use checksums
32b25ad7b16d5b251ddb9f6110a32d7b3953b987096da1d25ef277935d25daec
BLAKE2b-256 checksum
How to use checksums
e95fc9ae9b86de6681401a2a57510eb581fd593d0897e7e43b4b1c1eede87b20
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.10.4

Release history Release notifications | RSS feed

This release

1.0.3 This release

1 release file

1.0.2

2 release files

1.0.1

2 release files

1.0

2 release files

0.7.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page