Djohell commited on
Commit
ba72154
·
verified ·
1 Parent(s): 897caa9

Upload processing.py

Browse files
Files changed (1) hide show
  1. processing.py +6 -70
processing.py CHANGED
@@ -63,92 +63,28 @@ def map_statut_expert(p2):
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:
141
  col_ape = f"APE_{section_name}"
142
  if col_ape in df.columns:
143
  df[col_ape] = 1.0
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])
 
63
  # --- 3. PRÉPARATION DES DONNÉES (La version robuste) ---
64
 
65
  def prepare_input(data):
66
+ # On utilise la liste issue du Secret (qui doit être propre désormais !)
67
+ df = pd.DataFrame(0.0, index=[0], columns=FEATURES)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
 
69
+ # Remplissage par nom de colonne (Pandas gère l'index automatiquement)
 
 
 
70
  df['age_au_diagnostic'] = float(data.get('age_estime', 0))
71
  df['Tranche_effectif_num'] = float(data.get('Tranche_effectif_num', 0))
72
  df['is_ess'] = int(data.get('is_ess', 0))
73
 
 
74
  code_dep = str(data.get('code_departement', '')).strip().upper()
75
  df['risque_departemental'] = float(DEP_RISK_MAP.get(code_dep, 0.05))
76
 
 
77
  code_ape = str(data.get('code_ape', '')).zfill(2)
78
  section_name = APE_SECTION_MAP.get(code_ape)
79
  if section_name:
80
  col_ape = f"APE_{section_name}"
81
  if col_ape in df.columns:
82
  df[col_ape] = 1.0
83
+
 
 
 
84
  cj_prefix = str(data.get('categorie_juridique', ''))[:4]
85
  col_cj = f"CJ_{cj_prefix}"
86
  if col_cj in df.columns:
87
  df[col_cj] = 1.0
88
 
89
+ # L'ordre doit être strictement celui du Secret
90
+ return xgb.DMatrix(df[FEATURES])