如何在Python中计算MAPE |
您所在的位置:网站首页 › python计算平均绝对误差 › 如何在Python中计算MAPE |
如何在Python中计算MAPE
在这篇文章中,我们将看到如何计算确定预测准确性的方法之一,即平均绝对百分比误差(或简称MAPE),也称为平均绝对百分比偏差(MAPD)。绝对百分比误差(或简称MAPE),在python中也被称为平均绝对百分比偏差(MAPD)。MAPE术语决定了我们的预测有多大的准确性。MAPE中的 “M “代表平均数,即一系列的平均值;”A “代表绝对值,即使用绝对值来防止正负误差相互抵消;”P “是百分比,使这个准确性指标成为一个相对指标;”E “代表误差,因为这个指标有助于确定我们预测的误差量。 考虑下面的例子,我们有一个商店的销售信息。日列代表我们所指的日数,实际销售列代表各日的实际销售值,而预测销售列代表销售数字的预测值(可能用ML模型)。APE列代表绝对百分比误差(APE),表示相应一天的实际值和预测值之间的百分比误差。误差百分比的公式是(实际值-预测值)/实际值。APE是这个百分比误差的正(绝对)值。 Day No. Actual Sales Forecast Sales 绝对百分比误差(APE) 1 136 134 0.014 2 120 124 0.033 3 138 132 0.043 4 155 141 0.090 5 149 149 0.0现在,MAPE值可以通过取APE值的平均值来找到。该公式可以表示为 – 输出: MAPE输出是一个非负的浮点数。MAPE的最佳值是0.0,而更高的值则决定了预测不够准确。然而,MAPE值应该有多大,才能称之为低效预测,这取决于用例。在上面的输出中,我们可以看到预测值是足够好的,因为MAPE表明每天的销售预测值有3%的误差。 如果你在python中处理时间序列数据,你可能会使用pandas或NumPy。在这种情况下,你可以使用以下代码来获得MAPE输出。 import pandas as pd import numpy as np # Define the function to return the MAPE values def calculate_mape(actual, predicted) -> float: # Convert actual and predicted # to numpy array data type if not already if not all([isinstance(actual, np.ndarray), isinstance(predicted, np.ndarray)]): actual, predicted = np.array(actual), np.array(predicted) # Calculate the MAPE value and return return round(np.mean(np.abs(( actual - predicted) / actual)) * 100, 2) if __name__ == '__main__': # CALCULATE MAPE FROM PYTHON LIST actual = [136, 120, 138, 155, 149] predicted = [134, 124, 132, 141, 149] # Get MAPE for python list as parameters print("py list :", calculate_mape(actual, predicted), "%") # CALCULATE MAPE FROM NUMPY ARRAY actual = np.array([136, 120, 138, 155, 149]) predicted = np.array([134, 124, 132, 141, 149]) # Get MAPE for python list as parameters print("np array :", calculate_mape(actual, predicted), "%") # CALCULATE MAPE FROM PANDAS DATAFRAME # Define the pandas dataframe sales_df = pd.DataFrame({ "actual" : [136, 120, 138, 155, 149], "predicted" : [134, 124, 132, 141, 149] }) # Get MAPE for pandas series as parameters print("pandas df:", calculate_mape(sales_df.actual, sales_df.predicted), "%")输出: 在上面的程序中,我们描绘了一个单一的函数_calculate_mape() _,它对一个给定的python列表、NumPy数组或pandas序列进行MAPE计算。输出结果是相同的,因为相同的数据被传递给所有3种数据类型格式作为函数的参数。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |