Spaces:
Sleeping
Sleeping
Upload processing.py
Browse files- processing.py +66 -18
processing.py
CHANGED
|
@@ -63,27 +63,78 @@ def map_statut_expert(p2):
|
|
| 63 |
# --- 3. PRÉPARATION DES DONNÉES (La version robuste) ---
|
| 64 |
|
| 65 |
def prepare_input(data):
|
| 66 |
-
# 1.
|
| 67 |
-
#
|
| 68 |
-
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
|
| 72 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 73 |
|
| 74 |
-
# 2. On crée le DataFrame avec cet ordre
|
| 75 |
-
df = pd.DataFrame(0.0, index=[0], columns=
|
| 76 |
|
| 77 |
-
# 3. On remplit les
|
| 78 |
df['age_au_diagnostic'] = float(data.get('age_estime', 0))
|
| 79 |
df['Tranche_effectif_num'] = float(data.get('Tranche_effectif_num', 0))
|
| 80 |
df['is_ess'] = int(data.get('is_ess', 0))
|
| 81 |
|
| 82 |
-
#
|
| 83 |
code_dep = str(data.get('code_departement', '')).strip().upper()
|
| 84 |
df['risque_departemental'] = float(DEP_RISK_MAP.get(code_dep, 0.05))
|
| 85 |
|
| 86 |
-
# Mapping APE
|
| 87 |
code_ape = str(data.get('code_ape', '')).zfill(2)
|
| 88 |
section_name = APE_SECTION_MAP.get(code_ape)
|
| 89 |
if section_name:
|
|
@@ -93,14 +144,11 @@ def prepare_input(data):
|
|
| 93 |
else:
|
| 94 |
df['APE_Autres_Secteurs'] = 1.0
|
| 95 |
|
| 96 |
-
# Mapping CJ
|
| 97 |
cj_prefix = str(data.get('categorie_juridique', ''))[:4]
|
| 98 |
col_cj = f"CJ_{cj_prefix}"
|
| 99 |
if col_cj in df.columns:
|
| 100 |
df[col_cj] = 1.0
|
| 101 |
|
| 102 |
-
# 4.
|
| 103 |
-
|
| 104 |
-
df_final = df[clean_features]
|
| 105 |
-
|
| 106 |
-
return xgb.DMatrix(df_final)
|
|
|
|
| 63 |
# --- 3. PRÉPARATION DES DONNÉES (La version robuste) ---
|
| 64 |
|
| 65 |
def prepare_input(data):
|
| 66 |
+
# 1. LISTE EXACTE issue de ton erreur 500 (Ordre d'entraînement)
|
| 67 |
+
# C'est cette liste qui fait foi pour l'indexation XGBoost
|
| 68 |
+
model_ordered_cols = [
|
| 69 |
+
'Tranche_effectif_num', 'risque_departemental', 'is_ess',
|
| 70 |
+
'APE_Activités administratives et autres activités de soutien aux entreprises',
|
| 71 |
+
"APE_Activités auxiliaires de services financiers et d'assurance ",
|
| 72 |
+
'APE_Activités créatives, artistiques et de spectacle ',
|
| 73 |
+
"APE_Activités d'architecture et d'ingénierie ; activités de contrôle et analyses techniques",
|
| 74 |
+
'APE_Activités de location et location-bail',
|
| 75 |
+
'APE_Activités des agences de voyage, voyagistes, services de réservation et activités connexes',
|
| 76 |
+
'APE_Activités des services financiers, hors assurance et caisses de retraite',
|
| 77 |
+
'APE_Activités des sièges sociaux ; conseil de gestion',
|
| 78 |
+
'APE_Activités immobilières',
|
| 79 |
+
'APE_Activités juridiques et comptables',
|
| 80 |
+
"APE_Activités liées à l'emploi",
|
| 81 |
+
'APE_Activités pour la santé humaine',
|
| 82 |
+
'APE_Activités sportives, récréatives et de loisirs',
|
| 83 |
+
'APE_Autres activités spécialisées, scientifiques et techniques',
|
| 84 |
+
'APE_Autres industries manufacturières',
|
| 85 |
+
'APE_Autres services personnels',
|
| 86 |
+
'APE_Collecte, traitement et élimination des déchets ; récupération',
|
| 87 |
+
'APE_Commerce de détail, à l’exception des automobiles et des motocycles',
|
| 88 |
+
'APE_Commerce de gros, à l’exception des automobiles et des motocycles',
|
| 89 |
+
"APE_Commerce et réparation d'automobiles et de motocycles",
|
| 90 |
+
'APE_Construction de bâtiments ',
|
| 91 |
+
'APE_Enquêtes et sécurité',
|
| 92 |
+
'APE_Enseignement',
|
| 93 |
+
'APE_Entreposage et services auxiliaires des transports',
|
| 94 |
+
"APE_Fabrication d'autres produits minéraux non métalliques",
|
| 95 |
+
'APE_Fabrication de boissons',
|
| 96 |
+
'APE_Fabrication de machines et équipements n.c.a.',
|
| 97 |
+
'APE_Fabrication de meubles',
|
| 98 |
+
'APE_Fabrication de produits métalliques, à l’exception des machines et des équipements',
|
| 99 |
+
'APE_Génie civil',
|
| 100 |
+
'APE_Hébergement',
|
| 101 |
+
"APE_Imprimerie et reproduction d'enregistrements",
|
| 102 |
+
'APE_Industrie chimique',
|
| 103 |
+
"APE_Industrie de l'habillement",
|
| 104 |
+
'APE_Industries alimentaires',
|
| 105 |
+
'APE_Production de films cinématographiques, de vidéo et de programmes de télévision ; enregistrement sonore et édition musicale',
|
| 106 |
+
"APE_Production et distribution d'électricité, de gaz, de vapeur et d'air conditionné",
|
| 107 |
+
'APE_Programmation, conseil et autres activités informatiques ',
|
| 108 |
+
'APE_Publicité et études de marché',
|
| 109 |
+
'APE_Recherche-développement scientifique',
|
| 110 |
+
'APE_Restauration',
|
| 111 |
+
"APE_Réparation d'ordinateurs et de biens personnels et domestiques",
|
| 112 |
+
"APE_Réparation et installation de machines et d'équipements ",
|
| 113 |
+
"APE_Services d'information",
|
| 114 |
+
'APE_Services relatifs aux bâtiments et aménagement paysager',
|
| 115 |
+
'APE_Transports terrestres et transport par conduites',
|
| 116 |
+
"APE_Travail du bois et fabrication d'articles en bois et en liège, à l’exception des meubles ; fabrication d’articles en vannerie et sparterie",
|
| 117 |
+
'APE_Travaux de construction spécialisés ',
|
| 118 |
+
'APE_Télécommunications',
|
| 119 |
+
'APE_Édition',
|
| 120 |
+
'CJ_5710',
|
| 121 |
+
'APE_Autres_Secteurs',
|
| 122 |
+
'age_au_diagnostic'
|
| 123 |
+
]
|
| 124 |
|
| 125 |
+
# 2. On crée le DataFrame avec cet ordre IMPOUISSANT
|
| 126 |
+
df = pd.DataFrame(0.0, index=[0], columns=model_ordered_cols)
|
| 127 |
|
| 128 |
+
# 3. On remplit les données
|
| 129 |
df['age_au_diagnostic'] = float(data.get('age_estime', 0))
|
| 130 |
df['Tranche_effectif_num'] = float(data.get('Tranche_effectif_num', 0))
|
| 131 |
df['is_ess'] = int(data.get('is_ess', 0))
|
| 132 |
|
| 133 |
+
# Risque département
|
| 134 |
code_dep = str(data.get('code_departement', '')).strip().upper()
|
| 135 |
df['risque_departemental'] = float(DEP_RISK_MAP.get(code_dep, 0.05))
|
| 136 |
|
| 137 |
+
# Mapping APE
|
| 138 |
code_ape = str(data.get('code_ape', '')).zfill(2)
|
| 139 |
section_name = APE_SECTION_MAP.get(code_ape)
|
| 140 |
if section_name:
|
|
|
|
| 144 |
else:
|
| 145 |
df['APE_Autres_Secteurs'] = 1.0
|
| 146 |
|
| 147 |
+
# Mapping CJ
|
| 148 |
cj_prefix = str(data.get('categorie_juridique', ''))[:4]
|
| 149 |
col_cj = f"CJ_{cj_prefix}"
|
| 150 |
if col_cj in df.columns:
|
| 151 |
df[col_cj] = 1.0
|
| 152 |
|
| 153 |
+
# 4. On s'assure de l'ordre final avant DMatrix
|
| 154 |
+
return xgb.DMatrix(df[model_ordered_cols])
|
|
|
|
|
|
|
|
|