GMARTINEZMILLA commited on
Commit
664adfd
·
verified ·
1 Parent(s): 69daf75

Changed position of predicted results values for customer analysis.

Browse files
Files changed (1) hide show
  1. app.py +22 -48
app.py CHANGED
@@ -512,30 +512,6 @@ elif page == "🕵️ Análisis de Cliente":
512
  # Mostrar la gráfica en Streamlit
513
  st.plotly_chart(fig)
514
 
515
- # Calculate metrics for 2024 data
516
- datos_2024 = datos_combinados[datos_combinados['fecha_mes'].dt.year == 2024]
517
- actual = datos_2024['ventas_reales']
518
- predicted = datos_2024['ventas_predichas']
519
-
520
- def calculate_mape(y_true, y_pred):
521
- mask = y_true != 0
522
- return np.mean(np.abs((y_true[mask] - y_pred[mask]) / y_true[mask])) * 100
523
-
524
- mae = mean_absolute_error(actual, predicted)
525
- mse = mean_squared_error(actual, predicted)
526
- rmse = np.sqrt(mse)
527
- mape = calculate_mape(actual, predicted)
528
- smape = np.mean(2 * np.abs(actual - predicted) / (np.abs(actual) + np.abs(predicted))) * 100
529
-
530
- # Display metrics
531
- st.subheader("Métricas de Predicción (2024)")
532
- col1, col2, col3, col4 = st.columns(4)
533
- col1.metric("MAE", f"{mae:.2f} €",help="Promedio de la diferencia absoluta entre las predicciones y los valores reales.")
534
- col2.metric("MAPE", f"{mape:.2f}%",help="Porcentaje promedio de error en las predicciones.")
535
- col3.metric("RMSE", f"{rmse:.2f} €",help="Medida de la desviación estándar de los residuos de predicción.")
536
- col4.metric("SMAPE", f"{smape:.2f}%",help="Alternativa al MAPE que maneja mejor los valores cercanos a cero.")
537
-
538
-
539
  # Split space into two columns
540
  col1, col2 = st.columns(2)
541
 
@@ -746,6 +722,28 @@ elif page == "🕵️ Análisis de Cliente":
746
  else:
747
  st.warning(f"No predicted or actual data found for customer {customer_code} for 2024.")
748
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
749
  else:
750
  with st.spinner(f"Seleccionando el modelo predictivo..."):
751
  # Load the Corresponding Model
@@ -845,30 +843,6 @@ elif page == "🕵️ Análisis de Cliente":
845
  else:
846
  st.warning(f"El código de fabricante {codigo_fabricante_seleccionado} no se encuentra en el LabelEncoder.")
847
 
848
- # else:
849
- # with st.spinner(f"Mostrando datos para el fabricante {fabricante_seleccionado}..."):
850
- # # Mostrar el cliente y el fabricante seleccionados
851
- # st.write(f"**Cliente seleccionado:** {customer_code}")
852
- # st.write(f"**Fabricante seleccionado:** {fabricante_seleccionado}")
853
- # codigo_fabricante_seleccionado = np.int64(nombres_proveedores[nombres_proveedores['nombre'] == fabricante_seleccionado]['codigo'].values[0])
854
-
855
-
856
- # st.write(f"**Código fabricante seleccionado:** {codigo_fabricante_seleccionado}")
857
-
858
- # if codigo_fabricante_seleccionado in marca_id_mapping.classes_:
859
- # # Si el código está en el LabelEncoder, hacer la transformación
860
- # codigo_fabricante_encoded = marca_id_mapping.transform([codigo_fabricante_seleccionado])[0]
861
- # st.write(f"**Código fabricante encoded (marca_id_encoded):** {codigo_fabricante_encoded}")
862
- # else:
863
- # # Si el código no se encuentra en el LabelEncoder, mostrar advertencia y los códigos disponibles
864
- # st.warning(f"El código de fabricante {codigo_fabricante_seleccionado} no se encuentra en el LabelEncoder.")
865
- # st.write("Lista de códigos de fabricantes disponibles en el LabelEncoder:")
866
-
867
- # # Imprimir los códigos disponibles y su tipo
868
- # available_codes = marca_id_mapping.classes_
869
- # st.write(f"**Códigos disponibles:** {available_codes}")
870
- # st.write(f"**Tipo de los códigos disponibles:** {type(available_codes[0])}")
871
-
872
 
873
 
874
  # Customer Recommendations Page
 
512
  # Mostrar la gráfica en Streamlit
513
  st.plotly_chart(fig)
514
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
515
  # Split space into two columns
516
  col1, col2 = st.columns(2)
517
 
 
722
  else:
723
  st.warning(f"No predicted or actual data found for customer {customer_code} for 2024.")
724
 
725
+ # Calculate metrics for 2024 data
726
+ datos_2024 = datos_combinados[datos_combinados['fecha_mes'].dt.year == 2024]
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)
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:
748
  with st.spinner(f"Seleccionando el modelo predictivo..."):
749
  # Load the Corresponding Model
 
843
  else:
844
  st.warning(f"El código de fabricante {codigo_fabricante_seleccionado} no se encuentra en el LabelEncoder.")
845
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
846
 
847
 
848
  # Customer Recommendations Page