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

Added epsilon value to 0 when calculating mape values and got rid of SMAPE calculation

Browse files
Files changed (1) hide show
  1. app.py +9 -7
app.py CHANGED
@@ -727,9 +727,9 @@ 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):
731
- mask = y_true != 0
732
- return np.mean(np.abs((y_true[mask] - y_pred[mask]) / y_true[mask])) * 100
733
 
734
  mae = mean_absolute_error(actual, predicted)
735
  mse = mean_squared_error(actual, predicted)
@@ -821,6 +821,10 @@ elif page == "🕵️ Análisis de Cliente":
821
  xaxis_title="Fecha", yaxis_title="Ventas (€)", height=600)
822
  st.plotly_chart(fig)
823
 
 
 
 
 
824
  # Cálculo de métricas
825
  datos_2024 = datos_cliente_total[datos_cliente_total['fecha_mes'].dt.year == 2024]
826
  actual = datos_2024['ventas_reales']
@@ -828,16 +832,14 @@ elif page == "🕵️ Análisis de Cliente":
828
  mae = mean_absolute_error(actual, predicted)
829
  mse = mean_squared_error(actual, predicted)
830
  rmse = np.sqrt(mse)
831
- mape = np.mean(np.abs((actual - predicted) / actual)) * 100 if not actual.empty else 0
832
- smape = np.mean(2 * np.abs(actual - predicted) / (np.abs(actual) + np.abs(predicted))) * 100 if not actual.empty else 0
833
 
834
  # Mostrar métricas
835
  st.subheader("Métricas de Predicción (2024)")
836
- col1, col2, col3, col4 = st.columns(4)
837
  col1.metric("MAE", f"{mae:.2f} €")
838
  col2.metric("MAPE", f"{mape:.2f}%")
839
  col3.metric("RMSE", f"{rmse:.2f} €")
840
- col4.metric("SMAPE", f"{smape:.2f}%")
841
  else:
842
  st.warning(f"No se encontraron datos para el cliente {customer_code} y el fabricante {fabricante_seleccionado}.")
843
  else:
 
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)
 
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]
830
  actual = datos_2024['ventas_reales']
 
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}.")
845
  else: