Случайная лесная регрессия MAPE Деление на ноль ошибок после масштабирования MinMax - PullRequest
0 голосов
/ 03 ноября 2018

Чтобы повысить точность регрессионной модели случайного леса, я изменил стандартное средство Scikit Learn для масштабирования MinMax. Во время стандартного скаляра я не получил ошибку. Точность увеличилась, но при расчете MAPE я получаю ошибку ниже.

Mean Absolute Error: 0.03
Accuracy: -inf %.

__main__:5: RuntimeWarning: divide by zero encountered in true_divide

Код:

from sklearn.preprocessing import MinMaxScaler
sc_X = MinMaxScaler()
X_train = sc_X.fit_transform(X_train)
X_test = sc_X.transform(X_test)
sc_y = MinMaxScaler()
y_train = sc_y.fit_transform(y_train)


#MAE
errors = abs(y_pred - y_test)
print('Mean Absolute Error:', round(np.mean(errors), 2))

# Calculate mean absolute percentage error (MAPE)
mape = 100 * (errors / y_test)
# Calculate and display accuracy
accuracy = 100 - np.mean(mape)
print('Accuracy:', round(accuracy, 2), '%.')

1 Ответ

0 голосов
/ 05 ноября 2018

К сожалению, это одна из проблем использования MAPE. Из Википедии:

Показатели точности прогноза в процентах, такие как средняя абсолютная процентная ошибка (MAPE), основаны на делении y_t, искажая распределение MAPE для значений y_t, близких или равных 0. Это особенно проблематично для наборов данных, у которых нет масштабов значащий 0 или для наборов данных с прерывистым спросом, где y_t = 0 часто встречается.

В качестве альтернативы я бы предложил использовать MASE . MASE сможет нормально справиться с вашей проблемой.

...