rustlearn 0.4.3

A machine learning package for Rust.
Documentation
import os

import numpy as np

from sklearn.metrics import roc_auc_score

from base import Module, Test


class RocAucScoreTest(Test):

    TEMPLATE = """
               #[test]
               fn {name}() {{
                   let y_true = {y_true};
                   let y_hat = {y_hat};
                   let expected = {expected};

                   let computed = roc_auc_score(&y_true, &y_hat).unwrap();

                   if !close(expected, computed) {{
                       println!("Expected: {{}} computed {{}}", expected, computed);
                       assert!(false);
                   }}
               }}

    """


def _generate_test(name, rstate):

    no_points = rstate.randint(5, 20)

    y_true = rstate.randint(0, 2, no_points).astype(np.float32)
    y_hat = rstate.randn(no_points)

    expected = roc_auc_score(y_true, y_hat)

    return RocAucScoreTest(name, {'y_true': y_true,
                                  'y_hat': y_hat,
                                  'expected': expected})


def _generate_repeated_test(name, rstate):

    no_points = rstate.randint(5, 20)

    y_true = rstate.randint(0, 2, no_points).astype(np.float32)
    y_hat = rstate.randint(0, 3, no_points).astype(np.float32)

    expected = roc_auc_score(y_true, y_hat)

    return RocAucScoreTest(name, {'y_true': y_true,
                                  'y_hat': y_hat,
                                  'expected': expected})


def generate_module():

    RANDOM_STATE = np.random.RandomState(1031412)

    fname = os.path.join(os.path.dirname(__file__),
                         '..',
                         'src',
                         'metrics',
                         'test.rs')

    module = Module(imports=['metrics::ranking::*'])

    for num in range(5):
        name = 'roc_auc_test_%s' % num
        module.add_test(_generate_test(name, RANDOM_STATE))

    return fname, module