Spaces:
Sleeping
Sleeping
appc.py
#2
by mayss14 - opened
app.py
CHANGED
|
@@ -67,42 +67,59 @@ import streamlit as st
|
|
| 67 |
from models.cnn import CNNModel
|
| 68 |
from models.sca import CustomSCA
|
| 69 |
|
| 70 |
-
|
| 71 |
-
|
| 72 |
-
params = {
|
| 73 |
-
'filter1': int(solution[0]),
|
| 74 |
-
'filter2': int(solution[1]),
|
| 75 |
-
'filter3': int(solution[2]),
|
| 76 |
-
'learning_rate': solution[3],
|
| 77 |
-
'dropout': solution[4]
|
| 78 |
-
}
|
| 79 |
-
model = CNNModel(input_shape=(100, 1), num_classes=5) # Ajuster selon vos données
|
| 80 |
-
_, val_acc = model.train(X_train, y_train, params, epochs=3)
|
| 81 |
-
return 1 - val_acc # On minimise l'erreur
|
| 82 |
|
| 83 |
-
|
| 84 |
-
|
| 85 |
-
|
| 86 |
-
|
| 87 |
-
|
| 88 |
-
|
| 89 |
-
(0.1, 0.7) # dropout
|
| 90 |
-
]
|
| 91 |
|
| 92 |
-
|
| 93 |
-
|
| 94 |
-
|
| 95 |
-
|
| 96 |
-
|
| 97 |
-
|
| 98 |
-
|
| 99 |
-
|
| 100 |
-
|
| 101 |
-
|
| 102 |
-
|
| 103 |
-
|
| 104 |
-
|
| 105 |
-
|
| 106 |
-
|
| 107 |
-
|
| 108 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 67 |
from models.cnn import CNNModel
|
| 68 |
from models.sca import CustomSCA
|
| 69 |
|
| 70 |
+
st.markdown("---")
|
| 71 |
+
st.subheader("🔧 Optimisation du modèle CNN via SCA")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 72 |
|
| 73 |
+
if st.button("Optimiser"):
|
| 74 |
+
# Vérification si X_train et y_train sont prêts
|
| 75 |
+
try:
|
| 76 |
+
# Prépare tes données ici si ce n'est pas déjà fait
|
| 77 |
+
X_train = np.array(st.session_state['processed_df'].iloc[:, :-1])
|
| 78 |
+
y_train = np.array(st.session_state['processed_df'].iloc[:, -1])
|
|
|
|
|
|
|
| 79 |
|
| 80 |
+
# Remodèle X pour CNN (batch, time, features)
|
| 81 |
+
X_train = X_train.reshape((X_train.shape[0], X_train.shape[1], 1))
|
| 82 |
+
|
| 83 |
+
# 1. Définir la fonction objectif (mise à jour ici avec accès aux données)
|
| 84 |
+
def objective_function(solution):
|
| 85 |
+
params = {
|
| 86 |
+
'filter1': int(solution[0]),
|
| 87 |
+
'filter2': int(solution[1]),
|
| 88 |
+
'filter3': int(solution[2]),
|
| 89 |
+
'learning_rate': solution[3],
|
| 90 |
+
'dropout': solution[4]
|
| 91 |
+
}
|
| 92 |
+
model = CNNModel(input_shape=(X_train.shape[1], 1), num_classes=len(np.unique(y_train)))
|
| 93 |
+
_, val_acc = model.train(X_train, y_train, params, epochs=3)
|
| 94 |
+
return 1 - val_acc
|
| 95 |
+
|
| 96 |
+
# 2. Exécution de SCA
|
| 97 |
+
bounds = [
|
| 98 |
+
(32, 256), # filter1
|
| 99 |
+
(64, 512), # filter2
|
| 100 |
+
(128, 1024), # filter3
|
| 101 |
+
(0.0001, 0.01), # learning_rate
|
| 102 |
+
(0.1, 0.7) # dropout
|
| 103 |
+
]
|
| 104 |
+
|
| 105 |
+
sca = CustomSCA(obj_func=objective_function, bounds=bounds)
|
| 106 |
+
result = sca.optimize()
|
| 107 |
+
|
| 108 |
+
st.success("Optimisation terminée ✅")
|
| 109 |
+
|
| 110 |
+
st.write("### Meilleurs hyperparamètres trouvés :")
|
| 111 |
+
st.json({
|
| 112 |
+
'Filtres': [int(result['best_solution'][0]),
|
| 113 |
+
int(result['best_solution'][1]),
|
| 114 |
+
int(result['best_solution'][2])],
|
| 115 |
+
'Learning Rate': result['best_solution'][3],
|
| 116 |
+
'Dropout': result['best_solution'][4],
|
| 117 |
+
'Précision validation': f"{1 - result['best_fitness']:.2%}"
|
| 118 |
+
})
|
| 119 |
+
|
| 120 |
+
st.line_chart({
|
| 121 |
+
'Erreur': result['convergence_curve']
|
| 122 |
+
})
|
| 123 |
+
|
| 124 |
+
except Exception as e:
|
| 125 |
+
st.error(f"Erreur pendant l'optimisation : {e}")
|