Spaces:
Sleeping
Sleeping
Update app.py
Browse filesDerniers ajustements
app.py
CHANGED
|
@@ -17,9 +17,9 @@ from scipy.stats import pearsonr
|
|
| 17 |
TEST_SIZE = 0.3
|
| 18 |
RANDOM_STATE = 42
|
| 19 |
|
| 20 |
-
st.set_page_config(page_title="Analyse d'
|
| 21 |
|
| 22 |
-
st.title("🔍 Analyse de l'
|
| 23 |
st.markdown(
|
| 24 |
"""
|
| 25 |
Cette application illustre la différence entre la pertinence marginale et la pertinence conditionnelle d'une caractéristique.
|
|
@@ -213,20 +213,20 @@ if df is not None and X is not None and len(X.columns) > 0:
|
|
| 213 |
res = pd.DataFrame({
|
| 214 |
"Variable": feature_names,
|
| 215 |
"Importance seule (MI)": mi,
|
| 216 |
-
"Poids dans le
|
| 217 |
"Sens": np.where(coefs > 0, "+", "-")
|
| 218 |
})
|
| 219 |
|
| 220 |
if task == "Regression":
|
| 221 |
-
res["Lien
|
| 222 |
|
| 223 |
# Normalisation pour Score Synthétique
|
| 224 |
def normalize(s): return (s - s.min()) / (s.max() - s.min() + 1e-10)
|
| 225 |
mi_n = normalize(res["Importance seule (MI)"])
|
| 226 |
-
poids_n = normalize(res["Poids dans le
|
| 227 |
|
| 228 |
if task == "Regression":
|
| 229 |
-
corr_n = normalize(res["Lien
|
| 230 |
res["Score synthétique"] = ((mi_n + corr_n) / 2 + poids_n) / 2
|
| 231 |
else:
|
| 232 |
res["Score synthétique"] = (mi_n + poids_n) / 2
|
|
@@ -234,9 +234,9 @@ if df is not None and X is not None and len(X.columns) > 0:
|
|
| 234 |
res = res.sort_values("Score synthétique", ascending=False)
|
| 235 |
|
| 236 |
# Réorganisation des colonnes
|
| 237 |
-
cols = ["Variable", "Score synthétique", "Importance seule (MI)", "Poids dans le
|
| 238 |
if task == "Regression":
|
| 239 |
-
cols = ["Variable", "Score synthétique", "Importance seule (MI)", "Lien
|
| 240 |
|
| 241 |
final_df = res[cols].copy()
|
| 242 |
|
|
|
|
| 17 |
TEST_SIZE = 0.3
|
| 18 |
RANDOM_STATE = 42
|
| 19 |
|
| 20 |
+
st.set_page_config(page_title="Analyse d'importance", layout="wide")
|
| 21 |
|
| 22 |
+
st.title("🔍 Analyse de l'importance des caractéristiques")
|
| 23 |
st.markdown(
|
| 24 |
"""
|
| 25 |
Cette application illustre la différence entre la pertinence marginale et la pertinence conditionnelle d'une caractéristique.
|
|
|
|
| 213 |
res = pd.DataFrame({
|
| 214 |
"Variable": feature_names,
|
| 215 |
"Importance seule (MI)": mi,
|
| 216 |
+
"Poids dans le modèle": np.abs(coefs),
|
| 217 |
"Sens": np.where(coefs > 0, "+", "-")
|
| 218 |
})
|
| 219 |
|
| 220 |
if task == "Regression":
|
| 221 |
+
res["Lien direct (Corr)"] = [pearsonr(X_train_proc[:, i], y_train)[0] for i in range(len(feature_names))]
|
| 222 |
|
| 223 |
# Normalisation pour Score Synthétique
|
| 224 |
def normalize(s): return (s - s.min()) / (s.max() - s.min() + 1e-10)
|
| 225 |
mi_n = normalize(res["Importance seule (MI)"])
|
| 226 |
+
poids_n = normalize(res["Poids dans le modèle"])
|
| 227 |
|
| 228 |
if task == "Regression":
|
| 229 |
+
corr_n = normalize(res["Lien direct (Corr)"].abs())
|
| 230 |
res["Score synthétique"] = ((mi_n + corr_n) / 2 + poids_n) / 2
|
| 231 |
else:
|
| 232 |
res["Score synthétique"] = (mi_n + poids_n) / 2
|
|
|
|
| 234 |
res = res.sort_values("Score synthétique", ascending=False)
|
| 235 |
|
| 236 |
# Réorganisation des colonnes
|
| 237 |
+
cols = ["Variable", "Score synthétique", "Importance seule (MI)", "Poids dans le modèle", "Sens"]
|
| 238 |
if task == "Regression":
|
| 239 |
+
cols = ["Variable", "Score synthétique", "Importance seule (MI)", "Lien direct (Corr)", "Poids dans le modèle", "Sens"]
|
| 240 |
|
| 241 |
final_df = res[cols].copy()
|
| 242 |
|