【发布时间】:2019-04-07 06:48:52
【问题描述】:
为了提高随机森林回归模型的准确性,我将 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), '%.')
【问题讨论】:
-
缩放器似乎产生了零值,它是否将数据的原始最小值到最大值缩放为零到一?
-
是的@JamesPhillips 它已将一些值缩放为零。知道如何在计算 MAPE 指标期间处理这种情况吗? min(y_test) Out[27]: array([ 0.])
-
MAPE 可能会在不缩放因变量的情况下给出可接受的结果,值得一试。
-
是的@JamesPhillips 没有缩放和标准缩放器 MAPE 不会遇到任何问题。但只有使用 MinMax 缩放器 MAPE 进行缩放时才会出现此问题。感谢您的帮助詹姆斯!
标签: python machine-learning scikit-learn regression random-forest