Пример #1
0
def wape(x, x_true):
    """
    Получение значения метрики WAPE для таблицы x на основании таблицы x_true

    Parameters
    ----------
    x_true: np.ndarray
        векторизованная базовая матрица
    x: np.ndarray
        векторизованная матрица для сравнения ограничений

    Returns
    -------
    a: float
        значение метрики
    """
    try:
        # Проверяем число измерений
        if x.ndim == 1 or x.shape[1] == 1:
            x = v.tomatrix(x)
        if x_true.ndim == 1 or x_true.shape[1] == 1:
            x_true = v.tomatrix(x_true)

        diff = abs(x - x_true)
        s = x_true.sum()

        return 100. * np.sum(diff) / s
    except Exception as e:
        logging.error(traceback.format_exc())
        return -1
Пример #2
0
def RSQ(x, x_true):
    """
    Получение значения метрики RSQ(коэффициент детерминации) для таблицы x на основании таблицы x_true

    Parameters
    ----------
    x_true: np.ndarray
        векторизованная базовая матрица
    x: np.ndarray
        векторизованная матрица для сравнения ограничений

    Returns
    -------
    a: float
        значение метрики
    """
    try:
        # Проверяем число измерений
        if x.ndim == 1 or x.shape[1] == 1:
            x = v.tomatrix(x)
        if x_true.ndim == 1 or x_true.shape[1] == 1:
            x_true = v.tomatrix(x_true)

        var = x_true - np.mean(np.mean(x_true))
        TSS = np.sum(np.sum(var * var))
        e = x_true - x
        ESS = np.sum(np.sum(e * e))
        rsqr = 1 - ESS / TSS

        return rsqr
    except Exception as e:
        logging.error(traceback.format_exc())
        return -1
Пример #3
0
def swad(x, x_true, shape = None):
    """
    Получение значения метрики SWAD для таблицы x на основании таблицы x_true
    Parameters
    ----------
    x_true: np.ndarray
        векторизованная базовая матрица
    x: np.ndarray
        векторизованная матрица для сравнения ограничений
    Returns
    -------
    a: float
        значение метрики
    """
    try:
        # Проверяем число измерений
        if x.ndim == 1 or x.shape[1] == 1:
            x = v.tomatrix(x,  shape)
        if x_true.ndim == 1 or x_true.shape[1] == 1:
            x_true = v.tomatrix(x_true, shape)    
            
        return np.sum(abs(x_true) * abs(x - x_true)) / np.sum(x_true ** 2)
    except Exception as e:
        logging.error(traceback.format_exc())
        return -1
Пример #4
0
def PsiStat(x, x_true):
    """
    Получение значения метрики Psi statistic для таблицы x на основании таблицы x_true

    Parameters
    ----------
    x_true: np.ndarray
        векторизованная базовая матрица
    x: np.ndarray
        векторизованная матрица для сравнения ограничений

    Returns
    -------
    a: float
        значение метрики
    """
    try:
        # Проверяем число измерений
        if x.ndim == 1 or x.shape[1] == 1:
            x = v.tomatrix(x)
        if x_true.ndim == 1 or x_true.shape[1] == 1:
            x_true = v.tomatrix(x_true)

        s = (x_true + x) / 2

        inf1 = x_true / s
        loged1 = np.log(inf1)
        loged1 = np.nan_to_num(loged1)  # for nan\inf occasions
        left = x_true * loged1

        inf2 = x / s
        loged2 = np.log(inf2)
        loged2 = np.nan_to_num(loged2)  # for nan\inf occasions
        right = x * loged2

        inform = np.sum(np.sum(left + right))
        summ = np.sum(np.sum(x_true))
        psi = inform / summ

        return psi
    except Exception as e:
        logging.error(traceback.format_exc())
        return -1