Python 最小-最大缩放后的随机森林回归MAPE除以零误差

Python 最小-最大缩放后的随机森林回归MAPE除以零误差,python,machine-learning,scikit-learn,regression,random-forest,Python,Machine Learning,Scikit Learn,Regression,Random Forest,为了提高随机森林回归模型的准确性,我将scikit学习标准特征定标器更改为MinMax定标器。在标准标量期间,我没有得到错误。精度提高了,但在计算MAPE时,我得到的误差小于 Mean Absolute Error: 0.03 Accuracy: -inf %. __main__:5: RuntimeWarning: divide by zero encountered in true_divide 代码是: from sklearn.preprocessing import MinMaxS

为了提高随机森林回归模型的准确性,我将scikit学习标准特征定标器更改为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的划分,使y_t值接近或等于0时的MAPE分布发生倾斜。这对于比例没有意义0的数据集或间歇需求数据集尤其有问题,其中y_t=0经常出现


作为替代,我建议使用。MASE应该能够很好地处理您的问题。

缩放器似乎产生了一个0的值,它是否将数据的原始最小值缩放为最大值为0到1?是@JamesPhillips它将一些值缩放为0。在计算MAPE度量时,您知道如何处理这种情况吗?min(y_test)Out[27]:数组([0.])MAPE可能会在不缩放因变量的情况下给出可接受的结果,这值得一试。Yes@JamesPhillips不缩放,标准缩放器MAPE不会遇到任何问题。但只有在使用最小-最大缩放器MAPE进行缩放时才会出现此问题。谢谢你的帮助,詹姆斯!