Source code for coranking.metrics

import os

# Must mock the C module for read the docs as they have
# no support for compiling C code
on_rtd = os.environ.get('READTHEDOCS') == 'True'
if on_rtd:
    from unittest.mock import MagicMock
    _metrics_cy = MagicMock()
else:
    import coranking._metrics_cy as metrics_cy

import numpy as np


[docs]def trustworthiness(Q, min_k=1, max_k=None): """Compute the trustwortiness metric over a range of K values. :param Q: coranking matrix :param min_k: the lowest K value to compute. Default 1. :param max_k: the highest K value to compute. If None the range of values will be computer from min_k to n-1 :returns: array of size min_k - max_k with the corresponding trustworthiness values. """ if not isinstance(Q, np.int64): Q = Q.astype(np.int64) if max_k is None: max_k = Q.shape[0]-1 result = [metrics_cy.trustworthiness(Q, x) for x in range(min_k, max_k)] return np.array(result)
[docs]def continuity(Q, min_k=1, max_k=None): """Compute the continuity metric over a range of K values. :param Q: coranking matrix :param min_k: the lowest K value to compute. Default 1. :param max_k: the highest K value to compute. If None the range of values will be computer from min_k to n-1 :returns: array of size min_k - max_k with the corresponding continuity values. """ if not isinstance(Q, np.int64): Q = Q.astype(np.int64) if max_k is None: max_k = Q.shape[0]-1 result = [metrics_cy.continuity(Q, x) for x in range(min_k, max_k)] return np.array(result)
[docs]def LCMC(Q, min_k=1, max_k=None): """Compute the local continuity meta-criteria (LCMC) metric over a range of K values. :param Q: coranking matrix :param min_k: the lowest K value to compute. Default 1. :param max_k: the highest K value to compute. If None the range of values will be computer from min_k to n-1 :returns: array of size min_k - max_k with the corresponding LCMC values. """ if not isinstance(Q, np.int64): Q = Q.astype(np.int64) if max_k is None: max_k = Q.shape[0]-1 result = [metrics_cy.LCMC(Q, x) for x in range(min_k, max_k)] return np.array(result)
def _check_square_matrix(M): if M.shape[0] != M.shape[1]: msg = "Expected square matrix, but matrix had dimensions (%d, %d)" % M.shape raise RuntimeError(msg)