Spaces:
Sleeping
Sleeping
Upload processing.py
Browse files- 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 |
-
#
|
| 67 |
-
|
| 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 |
-
#
|
| 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 |
-
|
| 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 |
-
#
|
| 154 |
-
return xgb.DMatrix(df[
|
|
|
|
| 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])
|