Python MAPE正在生成inf作为输出
我在线性回归模型中使用MAPE度量。输出为inf 代码如下所示:Python MAPE正在生成inf作为输出,python,data-science,linear-regression,Python,Data Science,Linear Regression,我在线性回归模型中使用MAPE度量。输出为inf 代码如下所示: import numpy as nm def MAPE(a, b): mape = nm.mean(nm.abs((a - b) / a)) * 100 return mape MAPE(data.iloc[:, 1], pre) pre是存储预测值的变量 有人能指出这其中的小故障是什么吗?正如@filbranden在他的评论中正确写道的那样——当任何实际值等于零时,代码返回inf,因为除法为零。看看我的简单
import numpy as nm
def MAPE(a, b):
mape = nm.mean(nm.abs((a - b) / a)) * 100
return mape
MAPE(data.iloc[:, 1], pre)
pre是存储预测值的变量
有人能指出这其中的小故障是什么吗?正如@filbranden在他的评论中正确写道的那样——当任何实际值等于零时,代码返回inf,因为除法为零。看看我的简单测试,不同的实际值和预测值用于计算MAPE。以下是名为data的pandas.DataFrame: 我用你的MAPEa,b函数来计算MAPE
for real_val_col in ['real_1', 'real_2', 'real_3']:
for pred_val_col in ['pred_1', 'pred_2', 'pred_3']:
real_val = data[real_val_col]
pred_val = data[pred_val_col]
print(f'- MAPE for {real_val_col} and {pred_val_col}: {MAPE(real_val, pred_val):.2f} %')
这是测试结果。您可以看到,在所有情况下,MAPE都等于inf,程序必须将一个非缺失值除以零
- MAPE for real_1 and pred_1: 13.00 %
- MAPE for real_1 and pred_2: 15.00 %
- MAPE for real_1 and pred_3: 16.25 %
- MAPE for real_2 and pred_1: 16.25 %
- MAPE for real_2 and pred_2: 20.00 %
- MAPE for real_2 and pred_3: 16.25 %
- MAPE for real_3 and pred_1: inf %
- MAPE for real_3 and pred_2: inf %
- MAPE for real_3 and pred_3: 16.25 %
当a为0.0时,x/a为inf。您应该包含可重复性最低的代码,以便其他人可以轻松地帮助您。还应说明变量a和b使用的值。看看你所拥有的,似乎a和b的值相同,并导致除以0。如果你所陈述的情况是真的,那么我应该使用哪些错误度量来验证我的数据的准确性?@SrijanSrivastava,你可以尝试使用。
- MAPE for real_1 and pred_1: 13.00 %
- MAPE for real_1 and pred_2: 15.00 %
- MAPE for real_1 and pred_3: 16.25 %
- MAPE for real_2 and pred_1: 16.25 %
- MAPE for real_2 and pred_2: 20.00 %
- MAPE for real_2 and pred_3: 16.25 %
- MAPE for real_3 and pred_1: inf %
- MAPE for real_3 and pred_2: inf %
- MAPE for real_3 and pred_3: 16.25 %