GMARTINEZMILLA commited on
Commit
ecbdb27
·
verified ·
1 Parent(s): 7e33027

Update app.py

Browse files

changed mape for smape to obtain more accurate results

Files changed (1) hide show
  1. app.py +4 -10
app.py CHANGED
@@ -727,21 +727,17 @@ elif page == "🕵️ Análisis de Cliente":
727
  actual = datos_2024['ventas_reales']
728
  predicted = datos_2024['ventas_predichas']
729
 
730
- def calculate_mape(y_true, y_pred, epsilon=1e-10):
731
- # Add a small epsilon to the actual values to avoid division by zero
732
- return np.mean(np.abs((y_true - y_pred) / (y_true + epsilon))) * 100
733
 
734
  mae = mean_absolute_error(actual, predicted)
735
  mse = mean_squared_error(actual, predicted)
736
  rmse = np.sqrt(mse)
737
- mape = calculate_mape(actual, predicted)
738
  smape = np.mean(2 * np.abs(actual - predicted) / (np.abs(actual) + np.abs(predicted))) * 100
739
 
740
  # Display metrics
741
  st.subheader("Métricas de Predicción (2024)")
742
  col1, col2, col3 = st.columns(3)
743
  col1.metric("MAE", f"{mae:.2f} €",help="Promedio de la diferencia absoluta entre las predicciones y los valores reales.")
744
- col2.metric("MAPE", f"{mape:.2f}%",help="Porcentaje promedio de error en las predicciones.")
745
  col3.metric("RMSE", f"{rmse:.2f} €",help="Medida de la desviación estándar de los residuos de predicción.")
746
 
747
  else:
@@ -821,9 +817,6 @@ elif page == "🕵️ Análisis de Cliente":
821
  xaxis_title="Fecha", yaxis_title="Ventas (€)", height=600)
822
  st.plotly_chart(fig)
823
 
824
- def calculate_mape(y_true, y_pred, epsilon=1e-10):
825
- # Add a small epsilon to the actual values to avoid division by zero
826
- return np.mean(np.abs((y_true - y_pred) / (y_true + epsilon))) * 100
827
 
828
  # Cálculo de métricas
829
  datos_2024 = datos_cliente_total[datos_cliente_total['fecha_mes'].dt.year == 2024]
@@ -832,13 +825,14 @@ elif page == "🕵️ Análisis de Cliente":
832
  mae = mean_absolute_error(actual, predicted)
833
  mse = mean_squared_error(actual, predicted)
834
  rmse = np.sqrt(mse)
835
- mape = calculate_mape(actual, predicted)
 
836
 
837
  # Mostrar métricas
838
  st.subheader("Métricas de Predicción (2024)")
839
  col1, col2, col3 = st.columns(3)
840
  col1.metric("MAE", f"{mae:.2f} €")
841
- col2.metric("MAPE", f"{mape:.2f}%")
842
  col3.metric("RMSE", f"{rmse:.2f} €")
843
  else:
844
  st.warning(f"No se encontraron datos para el cliente {customer_code} y el fabricante {fabricante_seleccionado}.")
 
727
  actual = datos_2024['ventas_reales']
728
  predicted = datos_2024['ventas_predichas']
729
 
 
 
 
730
 
731
  mae = mean_absolute_error(actual, predicted)
732
  mse = mean_squared_error(actual, predicted)
733
  rmse = np.sqrt(mse)
 
734
  smape = np.mean(2 * np.abs(actual - predicted) / (np.abs(actual) + np.abs(predicted))) * 100
735
 
736
  # Display metrics
737
  st.subheader("Métricas de Predicción (2024)")
738
  col1, col2, col3 = st.columns(3)
739
  col1.metric("MAE", f"{mae:.2f} €",help="Promedio de la diferencia absoluta entre las predicciones y los valores reales.")
740
+ col2.metric("SMAPE", f"{smape:.2f}%",help="Porcentaje simétrico promedio de error en las predicciones.")
741
  col3.metric("RMSE", f"{rmse:.2f} €",help="Medida de la desviación estándar de los residuos de predicción.")
742
 
743
  else:
 
817
  xaxis_title="Fecha", yaxis_title="Ventas (€)", height=600)
818
  st.plotly_chart(fig)
819
 
 
 
 
820
 
821
  # Cálculo de métricas
822
  datos_2024 = datos_cliente_total[datos_cliente_total['fecha_mes'].dt.year == 2024]
 
825
  mae = mean_absolute_error(actual, predicted)
826
  mse = mean_squared_error(actual, predicted)
827
  rmse = np.sqrt(mse)
828
+ smape = np.mean(2 * np.abs(actual - predicted) / (np.abs(actual) + np.abs(predicted))) * 100
829
+
830
 
831
  # Mostrar métricas
832
  st.subheader("Métricas de Predicción (2024)")
833
  col1, col2, col3 = st.columns(3)
834
  col1.metric("MAE", f"{mae:.2f} €")
835
+ col2.metric("SMAPE", f"{smape:.2f}%")
836
  col3.metric("RMSE", f"{rmse:.2f} €")
837
  else:
838
  st.warning(f"No se encontraron datos para el cliente {customer_code} y el fabricante {fabricante_seleccionado}.")