En este artículo, veremos cómo calcular uno de los métodos para determinar la precisión del pronóstico llamado Media. Error porcentual absoluto (o simplemente MAPE) , también conocido como Desviación porcentual absoluta media (MAPD) en python. El término MAPE determina qué tan mejor precisión da nuestro pronóstico. La ‘M’ en MAPE significa media que toma el valor promedio de una serie, ‘A’ significa absoluto que usa valores absolutos para evitar que los errores positivos y negativos se cancelen entre sí, ‘P’ es el porcentaje que hace esta métrica de precisión es una métrica relativa, y la ‘E’ significa error, ya que esta métrica ayuda a determinar la cantidad de error que tiene nuestro pronóstico.
Considere el siguiente ejemplo, donde tenemos la información de ventas de una tienda. La columna de día representa el número de día al que nos referimos, la columna de ventas reales representa el valor de ventas real para el día respectivo, mientras que la columna de ventas previstas representa los valores previstos para las cifras de ventas (probablemente con un modelo ML). La columna APE significa Error porcentual absoluto (APE), que representa el error porcentual entre el valor real y el previsto para el día correspondiente. La fórmula para el porcentaje de error es (valor real – valor previsto) / valor real . El APE es el valor positivo (absoluto) de este porcentaje de error
Día No. |
Ventas actuales |
Pronostico de ventas |
Error porcentual absoluto (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 |
Ahora, el valor de MAPE se puede encontrar tomando la media de los valores de APE. La fórmula se puede representar como –
Veamos cómo podemos hacer lo mismo en python para el conjunto de datos anterior:
Python
# Define the dataset as python lists actual = [136, 120, 138, 155, 149] forecast = [134, 124, 132, 141, 149] # Consider a list APE to store the # APE value for each of the records in dataset APE = [] # Iterate over the list values for day in range(5): # Calculate percentage error per_err = (actual[day] - forecast[day]) / actual[day] # Take absolute value of # the percentage error (APE) per_err = abs(per_err) # Append it to the APE list APE.append(per_err) # Calculate the MAPE MAPE = sum(APE)/len(APE) # Print the MAPE value and percentage print(f''' MAPE : { round(MAPE, 2) } MAPE % : { round(MAPE*100, 2) } % ''')
Producción:
La salida MAPE es un punto flotante no negativo. El mejor valor para MAPE es 0,0, mientras que un valor más alto determina que las predicciones no son lo suficientemente precisas. Sin embargo, qué tan grande debe ser un valor MAPE para calificarlo como una predicción ineficiente depende del caso de uso. En el resultado anterior, podemos ver que los valores pronosticados son lo suficientemente buenos porque MAPE sugiere que hay un error del 3 % en los valores pronosticados para las ventas realizadas cada día.
Si está trabajando con datos de series temporales en python, probablemente esté trabajando con pandas o NumPy. En tal caso, puede usar el siguiente código para obtener la salida MAPE.
Python
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), "%")
Producción:
En el programa anterior, hemos representado una sola función ` calculate_mape() ` que realiza el cálculo de MAPE para una lista de python dada, una array NumPy o una serie de pandas. La salida es la misma que los mismos datos que se pasan a los 3 formatos de tipo de datos como parámetros a la función.
Publicación traducida automáticamente
Artículo escrito por apathak092 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA