Как рассчитать RMSPE в Python, используя NumPy - PullRequest
0 голосов
/ 06 ноября 2018

Я делаю многомерное прогнозирование с использованием набора данных Россмана. Теперь мне нужно использовать метрику RMSPE для оценки моей модели. Я видел соответствующую формулу здесь . Но я не уверен, как эффективно реализовать это, используя numpy. Буду признателен за любую оказанную помощь.

Ответы [ 3 ]

0 голосов
/ 21 марта 2019

Украдено у этого парня: https://www.kaggle.com/tushartilwankar/sklearn-rf

def ToWeight(y):
    w = np.zeros(y.shape, dtype=float)
    ind = y != 0
    w[ind] = 1./(y[ind]**2)
    return w

def RMSPE(y, yhat):
    w = ToWeight(y)
    rmspe = np.sqrt(np.mean( w * (y - yhat)**2 ))
    return rmspe here
0 голосов
/ 22 апреля 2019

Это должно быть нормализовано основополагающими истинами.

Уравнение RMSPE

def rmspe(y_true, y_pred):
    return np.sqrt(np.nanmean(np.square(((y_true - y_pred) / y_true))))*100
0 голосов
/ 06 ноября 2018

Вы можете воспользоваться возможностью векторизации numpy для такой метрики ошибки. Следующая функция может использоваться для вычисления RMSPE:

def rmse(y_true, y_pred):
    '''
    Compute Root Mean Square Percentage Error between two arrays.
    '''
    loss = np.sqrt(np.mean(np.square(((y_true - y_pred) / y_true)), axis=0))

    return loss

(Для ошибки между векторами axis=0 делает явным, что ошибка вычисляется построчно, возвращая вектор. Это не требуется, так как это поведение по умолчанию для np.mean.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...