Python 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,因为除法为零。看看我的简单

我在线性回归模型中使用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,因为除法为零。看看我的简单测试,不同的实际值和预测值用于计算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 %