python - MinMax Scaling 后的随机森林回归 MAPE 除以零误差
问题描述
为了提高随机森林回归模型的准确性,我将 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), '%.')
解决方案
不幸的是,这是使用 MAPE 的问题之一。来自维基百科:
百分比预测准确度度量,例如平均绝对百分比误差 (MAPE) 依赖于 y_t 的除法,使 MAPE 的分布偏斜 y_t 值接近或等于 0。这对于尺度没有有意义的 0 的数据集尤其成问题或对于间歇性需求数据集,其中 y_t=0 频繁出现。
作为替代方案,我建议改用MASE。MASE 应该能够很好地处理您的问题。
推荐阅读
- bash - 让 Bash 将 * 的用户输入作为算术运算符读取
- javascript - 在 React Native 中的路由/导航器之间显示 Loader/Spinner
- python - 对我的模型的准确性感到困惑
- gradle - IntellijIDEA + Gradle + JavaFX:一个“运行配置”的 java.lang.ClassNotFoundException 而不是另一个
- javascript - 如何在NodeJS中从一个数组中提取多个项目而不重复?
- python - Python sockets连续jpg文件共享
- javascript - EXPO React Native 将表单数据发送到 Node JS 后端
- python - 如何访问命名空间类中的“api”实例
- r - 错误消息 - 大小不能超过 NA 错误
- python - 从python中的数组预测值