Spaces:
Sleeping
Sleeping
Update app.py
Browse fileschanged mape for smape to obtain more accurate results
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("
|
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 |
-
|
|
|
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("
|
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}.")
|