Spaces:
Sleeping
Sleeping
Added epsilon value to 0 when calculating mape values and got rid of SMAPE calculation
Browse files
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 |
-
|
732 |
-
return np.mean(np.abs((y_true
|
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 =
|
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
|
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:
|