Skip to main content

Very unstable library containing utilities to measure and visualize statistical properties of machine learning models.

Project description

Launch Binder Current GitHub Actions build status Checked with mypy PyPI version PyPI - Python Version License MIT Friends with Luminovo.AI

metriculous

Measure, visualize, and compare machine learning model performance without the usual boilerplate. Breaking API improvements to be expected.

Installation

$ pip install metriculous

Or, for the latest unreleased version:

$ pip install git+https://github.com/metriculous-ml/metriculous.git

Comparing Regression Models Binder

Click to see more code

import numpy as np

# Mock the ground truth, a one-dimensional array of floats
ground_truth = np.random.random(300)

# Mock the output of a few models
perfect_model = ground_truth
noisy_model = ground_truth + 0.1 * np.random.randn(*ground_truth.shape)
random_model = np.random.randn(*ground_truth.shape)
zero_model = np.zeros_like(ground_truth)

import metriculous

metriculous.compare_regressors(
    ground_truth=ground_truth,
    model_predictions=[perfect_model, noisy_model, random_model, zero_model],
    model_names=["Perfect Model", "Noisy Model", "Random Model", "Zero Model"],
).save_html("comparison.html").display()

This will save an HTML file with common regression metrics and charts, and if you are working in a Jupyter notebook will display the output right in front of you:

Screenshot of Metriculous Regression Metrics Screenshot of Metriculous Regression Figures

Comparing Classification Models Binder

Click to see more code

import numpy as np


def normalize(array2d: np.ndarray) -> np.ndarray:
    return array2d / array2d.sum(axis=1, keepdims=True)


class_names = ["Cat", "Dog", "Pig"]
num_classes = len(class_names)
num_samples = 500

# Mock ground truth
ground_truth = np.random.choice(range(num_classes), size=num_samples, p=[0.5, 0.4, 0.1])

# Mock model predictions
perfect_model = np.eye(num_classes)[ground_truth]
noisy_model = normalize(
    perfect_model + 2 * np.random.random((num_samples, num_classes))
)
random_model = normalize(np.random.random((num_samples, num_classes)))

import metriculous

metriculous.compare_classifiers(
    ground_truth=ground_truth,
    model_predictions=[perfect_model, noisy_model, random_model],
    model_names=["Perfect Model", "Noisy Model", "Random Model"],
    class_names=class_names,
    one_vs_all_figures=True,
).display()

Screenshot of Metriculous Classification Table

Screenshot of Metriculous Classification Figures

Screenshot of Metriculous Classification Figures

Screenshot of Metriculous Classification Figures

Development

Poetry

This project uses poetry to manage dependencies. Please make sure it is installed for the required python version. Then install the dependencies with poetry install.

Makefile

A Makefile is used to automate common development workflows. Type make or make help to see a list of available commands. Before commiting changes it is recommended to run make format check test.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

metriculous-0.3.0.tar.gz (40.9 kB view details)

Uploaded Source

Built Distribution

metriculous-0.3.0-py3-none-any.whl (50.6 kB view details)

Uploaded Python 3

File details

Details for the file metriculous-0.3.0.tar.gz.

File metadata

  • Download URL: metriculous-0.3.0.tar.gz
  • Upload date:
  • Size: 40.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.4 CPython/3.7.8 Darwin/19.6.0

File hashes

Hashes for metriculous-0.3.0.tar.gz
Algorithm Hash digest
SHA256 6bce4e4746e707517fa3bcb3f7307f9c71a267566bcbddaa1257194db4e2d741
MD5 8265f9d0168e759a62e306b86cdca510
BLAKE2b-256 645ddae8ff38946fa2a97463b36e3b01fb908f650437c20d2f0c3ceaa6c52b94

See more details on using hashes here.

File details

Details for the file metriculous-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: metriculous-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 50.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.4 CPython/3.7.8 Darwin/19.6.0

File hashes

Hashes for metriculous-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4f6116596facc988f0cde6766a9596e824cab1992849ab04a07339bc066d12f0
MD5 cc6b5895a64418923c43323d2b987468
BLAKE2b-256 b4a620832436e207d8459f577d6b86e15c3d785fc2642f8eb1cadeb39fc34cb1

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page