import pandas as pd import numpy as np import matplotlib.pyplot as plt import importlib from st_on_hover_tabs import on_hover_tabs import streamlit as st import streamlit_presentation import streamlit_presentation.analyse importlib.reload(streamlit_presentation.analyse) from streamlit_presentation.analyse import repartition_par_categorie from streamlit_presentation.analyse import repartition_longueur_categorie import streamlit_presentation.preprocessing importlib.reload(streamlit_presentation.preprocessing) from streamlit_presentation.preprocessing import detection_langage_et_traduction import streamlit_presentation.modele importlib.reload(streamlit_presentation.modele) from streamlit_presentation.modele import presentation_modele from sklearn.metrics import f1_score plt.rcParams['font.size'] = 12 plt.rcParams['axes.labelsize'] = 10 plt.rcParams['axes.titlesize'] = 12 plt.rcParams['xtick.labelsize'] = 8 plt.rcParams['ytick.labelsize'] = 8 plt.rcParams['legend.fontsize'] = 8 plt.rcParams['lines.linewidth'] = 1 #on charge les donnees utilisees data = pd.read_csv( 'data.csv') extract_data = pd.read_csv( 'data_tr_extract.csv') sum_data = pd.read_csv( 'data_sum_extract.csv') test_data = pd.read_pickle( 'data_test.pkl') from keras.models import load_model import tensorflow as tf from tensorflow.keras import backend as K import ast def f1_weighted(true, pred): # Classes classes = K.arange(0, 27) true = K.one_hot(K.cast(true, 'int32'), 27) # Calcule les TP, FP, FN pour chaque classe tp = K.dot(K.transpose(true), K.round(pred)) fp = K.dot(K.transpose(1-true), K.round(pred)) fn = K.dot(K.transpose(true), 1-K.round(pred)) # Calcule le score F1 pour chaque classe p = tp / (tp + fp + K.epsilon()) r = tp / (tp + fn + K.epsilon()) f1 = 2*p*r / (p+r+K.epsilon()) weighted_f1 = K.sum(f1 * K.sum(true, axis=0) / K.sum(true)) return weighted_f1 model = load_model("final_model_kfold.h5", custom_objects={'f1_weighted': f1_weighted}) from sklearn.preprocessing import LabelEncoder encoder = LabelEncoder() print(test_data.columns) y_test = encoder.fit_transform(test_data["prdtypecode"]) class_labels = encoder.classes_ label_size = 27 ####### Page principale st.set_page_config(layout="wide") st.markdown('', unsafe_allow_html=True) st.title("Mon Application") with st.sidebar: tabs = on_hover_tabs(tabName=['Introduction', "Analyse", "Preprocessing", "Modèle", "Pistes exploratoires"], iconName=['apps', 'bar_chart', "sync", "memory", "topic"], default_choice=0) st.markdown(""" """, unsafe_allow_html=True) if tabs == "Introduction": st.write("# Introduction") st.write("Ici") elif tabs == "Analyse": st.write("# Analyse") st.dataframe(data.head(30)) st.write("") repartition_par_categorie(st, data) repartition_longueur_categorie(st, data) elif tabs == "Preprocessing": detection_langage_et_traduction(st, extract_data, sum_data) elif tabs == "Modèle": presentation_modele(st, test_data, model,class_labels,y_test) elif tabs == "Pistes exploratoires": st.write("# Pistes exploratoires") st.write("Ici")