Spaces:
Sleeping
Sleeping
| from pydantic import BaseModel, Field | |
| from typing import Optional | |
| # Modèle Pydantic pour application_test.csv | |
| class ApplicationTest(BaseModel): | |
| """ | |
| Modèle de validation pour les données de demande de prêt (application_test.csv) | |
| Basé sur la compétition Kaggle Home Credit Default Risk | |
| """ | |
| SK_ID_CURR: int = Field(..., description="ID unique de la demande de prêt") | |
| NAME_CONTRACT_TYPE: str = Field(..., description="Type de contrat (Cash loans ou Revolving loans)") | |
| CODE_GENDER: str = Field(..., description="Genre du client (M, F, XNA)") | |
| FLAG_OWN_CAR: str = Field(..., description="Indicateur de possession de voiture (Y/N)") | |
| FLAG_OWN_REALTY: str = Field(..., description="Indicateur de possession de bien immobilier (Y/N)") | |
| CNT_CHILDREN: int = Field(..., description="Nombre d'enfants") | |
| AMT_INCOME_TOTAL: float = Field(..., gt=0, description="Revenu total du client") | |
| AMT_CREDIT: float = Field(..., gt=0, description="Montant du crédit") | |
| AMT_ANNUITY: Optional[float] = Field(None, gt=0, description="Montant de l'annuité du prêt") | |
| AMT_GOODS_PRICE: Optional[float] = Field(None, gt=0, description="Prix des biens pour lesquels le prêt est accordé") | |
| NAME_TYPE_SUITE: Optional[str] = Field(None, description="Qui accompagne le client lors de la demande") | |
| NAME_INCOME_TYPE: str = Field(..., description="Type de revenu du client") | |
| NAME_EDUCATION_TYPE: str = Field(..., description="Niveau d'éducation du client") | |
| NAME_FAMILY_STATUS: str = Field(..., description="Statut familial du client") | |
| NAME_HOUSING_TYPE: str = Field(..., description="Type de logement") | |
| REGION_POPULATION_RELATIVE: float = Field(..., description="Population relative de la région") | |
| DAYS_BIRTH: int = Field(..., lt=0, description="Âge du client en jours (négatif)") | |
| DAYS_EMPLOYED: int = Field(..., description="Nombre de jours d'emploi (négatif)") | |
| DAYS_REGISTRATION: float = Field(..., description="Jours depuis l'enregistrement") | |
| DAYS_ID_PUBLISH: int = Field(..., description="Jours depuis la publication de l'ID") | |
| OWN_CAR_AGE: Optional[float] = Field(None, description="Âge de la voiture") | |
| FLAG_MOBIL: int = Field(..., description="Le client a fourni un téléphone mobile (1/0)") | |
| FLAG_EMP_PHONE: int = Field(..., description="Le client a fourni un téléphone professionnel (1/0)") | |
| FLAG_WORK_PHONE: int = Field(..., description="Le client a fourni un téléphone de travail (1/0)") | |
| FLAG_CONT_MOBILE: int = Field(..., description="Le téléphone mobile est joignable (1/0)") | |
| FLAG_PHONE: int = Field(..., description="Le client a fourni un téléphone fixe (1/0)") | |
| FLAG_EMAIL: int = Field(..., description="Le client a fourni un email (1/0)") | |
| OCCUPATION_TYPE: Optional[str] = Field(None, description="Type d'occupation du client") | |
| CNT_FAM_MEMBERS: Optional[float] = Field(None, description="Nombre de membres de la famille") | |
| REGION_RATING_CLIENT: int = Field(..., description="Note de la région du client") | |
| REGION_RATING_CLIENT_W_CITY: int = Field(..., description="Note de la région avec ville") | |
| WEEKDAY_APPR_PROCESS_START: str = Field(..., description="Jour de la semaine de la demande") | |
| HOUR_APPR_PROCESS_START: int = Field(..., description="Heure de la demande") | |
| REG_REGION_NOT_LIVE_REGION: int = Field(..., description="Région d'enregistrement différente de la région de résidence") | |
| REG_REGION_NOT_WORK_REGION: int = Field(..., description="Région d'enregistrement différente de la région de travail") | |
| LIVE_REGION_NOT_WORK_REGION: int = Field(..., description="Région de résidence différente de la région de travail") | |
| REG_CITY_NOT_LIVE_CITY: int = Field(..., description="Ville d'enregistrement différente de la ville de résidence") | |
| REG_CITY_NOT_WORK_CITY: int = Field(..., description="Ville d'enregistrement différente de la ville de travail") | |
| LIVE_CITY_NOT_WORK_CITY: int = Field(..., description="Ville de résidence différente de la ville de travail") | |
| ORGANIZATION_TYPE: str = Field(..., description="Type d'organisation où travaille le client") | |
| EXT_SOURCE_1: Optional[float] = Field(None, description="Score normalisé de source externe 1") | |
| EXT_SOURCE_2: Optional[float] = Field(None, description="Score normalisé de source externe 2") | |
| EXT_SOURCE_3: Optional[float] = Field(None, description="Score normalisé de source externe 3") | |
| APARTMENTS_AVG: Optional[float] = Field(None, description="Moyenne des informations sur l'appartement") | |
| BASEMENTAREA_AVG: Optional[float] = Field(None, description="Moyenne de la surface du sous-sol") | |
| YEARS_BEGINEXPLUATATION_AVG: Optional[float] = Field(None, description="Moyenne des années de début d'exploitation") | |
| YEARS_BUILD_AVG: Optional[float] = Field(None, description="Moyenne des années de construction") | |
| COMMONAREA_AVG: Optional[float] = Field(None, description="Moyenne de la surface commune") | |
| ELEVATORS_AVG: Optional[float] = Field(None, description="Moyenne du nombre d'ascenseurs") | |
| ENTRANCES_AVG: Optional[float] = Field(None, description="Moyenne du nombre d'entrées") | |
| FLOORSMAX_AVG: Optional[float] = Field(None, description="Moyenne du nombre maximum d'étages") | |
| FLOORSMIN_AVG: Optional[float] = Field(None, description="Moyenne du nombre minimum d'étages") | |
| LANDAREA_AVG: Optional[float] = Field(None, description="Moyenne de la surface du terrain") | |
| LIVINGAPARTMENTS_AVG: Optional[float] = Field(None, description="Moyenne des appartements habitables") | |
| LIVINGAREA_AVG: Optional[float] = Field(None, description="Moyenne de la surface habitable") | |
| NONLIVINGAPARTMENTS_AVG: Optional[float] = Field(None, description="Moyenne des appartements non habitables") | |
| NONLIVINGAREA_AVG: Optional[float] = Field(None, description="Moyenne de la surface non habitable") | |
| APARTMENTS_MODE: Optional[float] = Field(None, description="Mode des informations sur l'appartement") | |
| BASEMENTAREA_MODE: Optional[float] = Field(None, description="Mode de la surface du sous-sol") | |
| YEARS_BEGINEXPLUATATION_MODE: Optional[float] = Field(None, description="Mode des années de début d'exploitation") | |
| YEARS_BUILD_MODE: Optional[float] = Field(None, description="Mode des années de construction") | |
| COMMONAREA_MODE: Optional[float] = Field(None, description="Mode de la surface commune") | |
| ELEVATORS_MODE: Optional[float] = Field(None, description="Mode du nombre d'ascenseurs") | |
| ENTRANCES_MODE: Optional[float] = Field(None, description="Mode du nombre d'entrées") | |
| FLOORSMAX_MODE: Optional[float] = Field(None, description="Mode du nombre maximum d'étages") | |
| FLOORSMIN_MODE: Optional[float] = Field(None, description="Mode du nombre minimum d'étages") | |
| LANDAREA_MODE: Optional[float] = Field(None, description="Mode de la surface du terrain") | |
| LIVINGAPARTMENTS_MODE: Optional[float] = Field(None, description="Mode des appartements habitables") | |
| LIVINGAREA_MODE: Optional[float] = Field(None, description="Mode de la surface habitable") | |
| NONLIVINGAPARTMENTS_MODE: Optional[float] = Field(None, description="Mode des appartements non habitables") | |
| NONLIVINGAREA_MODE: Optional[float] = Field(None, description="Mode de la surface non habitable") | |
| APARTMENTS_MEDI: Optional[float] = Field(None, description="Médiane des informations sur l'appartement") | |
| BASEMENTAREA_MEDI: Optional[float] = Field(None, description="Médiane de la surface du sous-sol") | |
| YEARS_BEGINEXPLUATATION_MEDI: Optional[float] = Field(None, description="Médiane des années de début d'exploitation") | |
| YEARS_BUILD_MEDI: Optional[float] = Field(None, description="Médiane des années de construction") | |
| COMMONAREA_MEDI: Optional[float] = Field(None, description="Médiane de la surface commune") | |
| ELEVATORS_MEDI: Optional[float] = Field(None, description="Médiane du nombre d'ascenseurs") | |
| ENTRANCES_MEDI: Optional[float] = Field(None, description="Médiane du nombre d'entrées") | |
| FLOORSMAX_MEDI: Optional[float] = Field(None, description="Médiane du nombre maximum d'étages") | |
| FLOORSMIN_MEDI: Optional[float] = Field(None, description="Médiane du nombre minimum d'étages") | |
| LANDAREA_MEDI: Optional[float] = Field(None, description="Médiane de la surface du terrain") | |
| LIVINGAPARTMENTS_MEDI: Optional[float] = Field(None, description="Médiane des appartements habitables") | |
| LIVINGAREA_MEDI: Optional[float] = Field(None, description="Médiane de la surface habitable") | |
| NONLIVINGAPARTMENTS_MEDI: Optional[float] = Field(None, description="Médiane des appartements non habitables") | |
| NONLIVINGAREA_MEDI: Optional[float] = Field(None, description="Médiane de la surface non habitable") | |
| FONDKAPREMONT_MODE: Optional[str] = Field(None, description="Mode du fonds de réparation") | |
| HOUSETYPE_MODE: Optional[str] = Field(None, description="Mode du type de maison") | |
| TOTALAREA_MODE: Optional[float] = Field(None, description="Mode de la surface totale") | |
| WALLSMATERIAL_MODE: Optional[str] = Field(None, description="Mode du matériau des murs") | |
| EMERGENCYSTATE_MODE: Optional[str] = Field(None, description="Mode de l'état d'urgence") | |
| OBS_30_CNT_SOCIAL_CIRCLE: Optional[float] = Field(None, description="Observations du cercle social sur 30 jours") | |
| DEF_30_CNT_SOCIAL_CIRCLE: Optional[float] = Field(None, description="Défauts du cercle social sur 30 jours") | |
| OBS_60_CNT_SOCIAL_CIRCLE: Optional[float] = Field(None, description="Observations du cercle social sur 60 jours") | |
| DEF_60_CNT_SOCIAL_CIRCLE: Optional[float] = Field(None, description="Défauts du cercle social sur 60 jours") | |
| DAYS_LAST_PHONE_CHANGE: Optional[float] = Field(None, description="Jours depuis le dernier changement de téléphone") | |
| FLAG_DOCUMENT_2: int = Field(..., description="Le client a fourni le document 2") | |
| FLAG_DOCUMENT_3: int = Field(..., description="Le client a fourni le document 3") | |
| FLAG_DOCUMENT_4: int = Field(..., description="Le client a fourni le document 4") | |
| FLAG_DOCUMENT_5: int = Field(..., description="Le client a fourni le document 5") | |
| FLAG_DOCUMENT_6: int = Field(..., description="Le client a fourni le document 6") | |
| FLAG_DOCUMENT_7: int = Field(..., description="Le client a fourni le document 7") | |
| FLAG_DOCUMENT_8: int = Field(..., description="Le client a fourni le document 8") | |
| FLAG_DOCUMENT_9: int = Field(..., description="Le client a fourni le document 9") | |
| FLAG_DOCUMENT_10: int = Field(..., description="Le client a fourni le document 10") | |
| FLAG_DOCUMENT_11: int = Field(..., description="Le client a fourni le document 11") | |
| FLAG_DOCUMENT_12: int = Field(..., description="Le client a fourni le document 12") | |
| FLAG_DOCUMENT_13: int = Field(..., description="Le client a fourni le document 13") | |
| FLAG_DOCUMENT_14: int = Field(..., description="Le client a fourni le document 14") | |
| FLAG_DOCUMENT_15: int = Field(..., description="Le client a fourni le document 15") | |
| FLAG_DOCUMENT_16: int = Field(..., description="Le client a fourni le document 16") | |
| FLAG_DOCUMENT_17: int = Field(..., description="Le client a fourni le document 17") | |
| FLAG_DOCUMENT_18: int = Field(..., description="Le client a fourni le document 18") | |
| FLAG_DOCUMENT_19: int = Field(..., description="Le client a fourni le document 19") | |
| FLAG_DOCUMENT_20: int = Field(..., description="Le client a fourni le document 20") | |
| FLAG_DOCUMENT_21: int = Field(..., description="Le client a fourni le document 21") | |
| AMT_REQ_CREDIT_BUREAU_HOUR: Optional[float] = Field(None, description="Nombre de demandes au bureau de crédit dans la dernière heure") | |
| AMT_REQ_CREDIT_BUREAU_DAY: Optional[float] = Field(None, description="Nombre de demandes au bureau de crédit dans le dernier jour") | |
| AMT_REQ_CREDIT_BUREAU_WEEK: Optional[float] = Field(None, description="Nombre de demandes au bureau de crédit dans la dernière semaine") | |
| AMT_REQ_CREDIT_BUREAU_MON: Optional[float] = Field(None, description="Nombre de demandes au bureau de crédit dans le dernier mois") | |
| AMT_REQ_CREDIT_BUREAU_QRT: Optional[float] = Field(None, description="Nombre de demandes au bureau de crédit dans le dernier trimestre") | |
| AMT_REQ_CREDIT_BUREAU_YEAR: Optional[float] = Field(None, description="Nombre de demandes au bureau de crédit dans la dernière année") | |
| class Config: | |
| json_schema_extra = { | |
| "example": { | |
| "SK_ID_CURR": 100001, | |
| "NAME_CONTRACT_TYPE": "Cash loans", | |
| "CODE_GENDER": "M", | |
| "FLAG_OWN_CAR": "N", | |
| "FLAG_OWN_REALTY": "Y", | |
| "CNT_CHILDREN": 0, | |
| "AMT_INCOME_TOTAL": 202500.0, | |
| "AMT_CREDIT": 406597.5, | |
| "AMT_ANNUITY": 24700.5, | |
| "AMT_GOODS_PRICE": 351000.0, | |
| "NAME_TYPE_SUITE": "Unaccompanied", | |
| "NAME_INCOME_TYPE": "Working", | |
| "NAME_EDUCATION_TYPE": "Secondary / secondary special", | |
| "NAME_FAMILY_STATUS": "Single / not married", | |
| "NAME_HOUSING_TYPE": "House / apartment", | |
| "REGION_POPULATION_RELATIVE": 0.018801, | |
| "DAYS_BIRTH": -9461, | |
| "DAYS_EMPLOYED": -637, | |
| "DAYS_REGISTRATION": -3648.0, | |
| "DAYS_ID_PUBLISH": -2120, | |
| "OWN_CAR_AGE": None, | |
| "FLAG_MOBIL": 1, | |
| "FLAG_EMP_PHONE": 1, | |
| "FLAG_WORK_PHONE": 0, | |
| "FLAG_CONT_MOBILE": 1, | |
| "FLAG_PHONE": 1, | |
| "FLAG_EMAIL": 0, | |
| "OCCUPATION_TYPE": "Laborers", | |
| "CNT_FAM_MEMBERS": 1.0, | |
| "REGION_RATING_CLIENT": 2, | |
| "REGION_RATING_CLIENT_W_CITY": 2, | |
| "WEEKDAY_APPR_PROCESS_START": "WEDNESDAY", | |
| "HOUR_APPR_PROCESS_START": 10, | |
| "REG_REGION_NOT_LIVE_REGION": 0, | |
| "REG_REGION_NOT_WORK_REGION": 0, | |
| "LIVE_REGION_NOT_WORK_REGION": 0, | |
| "REG_CITY_NOT_LIVE_CITY": 0, | |
| "REG_CITY_NOT_WORK_CITY": 0, | |
| "LIVE_CITY_NOT_WORK_CITY": 0, | |
| "ORGANIZATION_TYPE": "Business Entity Type 3", | |
| "EXT_SOURCE_1": 0.083037, | |
| "EXT_SOURCE_2": 0.262949, | |
| "EXT_SOURCE_3": 0.139376, | |
| "APARTMENTS_AVG": 0.0247, | |
| "BASEMENTAREA_AVG": 0.0369, | |
| "YEARS_BEGINEXPLUATATION_AVG": 0.9722, | |
| "YEARS_BUILD_AVG": 0.6192, | |
| "COMMONAREA_AVG": 0.0143, | |
| "ELEVATORS_AVG": 0.00, | |
| "ENTRANCES_AVG": 0.0690, | |
| "FLOORSMAX_AVG": 0.0833, | |
| "FLOORSMIN_AVG": 0.1250, | |
| "LANDAREA_AVG": 0.0369, | |
| "LIVINGAPARTMENTS_AVG": 0.0202, | |
| "LIVINGAREA_AVG": 0.0190, | |
| "NONLIVINGAPARTMENTS_AVG": 0.0000, | |
| "NONLIVINGAREA_AVG": 0.0000, | |
| "APARTMENTS_MODE": 0.0247, | |
| "BASEMENTAREA_MODE": 0.0369, | |
| "YEARS_BEGINEXPLUATATION_MODE": 0.9722, | |
| "YEARS_BUILD_MODE": 0.6192, | |
| "COMMONAREA_MODE": 0.0143, | |
| "ELEVATORS_MODE": 0.00, | |
| "ENTRANCES_MODE": 0.0690, | |
| "FLOORSMAX_MODE": 0.0833, | |
| "FLOORSMIN_MODE": 0.1250, | |
| "LANDAREA_MODE": 0.0369, | |
| "LIVINGAPARTMENTS_MODE": 0.0202, | |
| "LIVINGAREA_MODE": 0.0190, | |
| "NONLIVINGAPARTMENTS_MODE": 0.0000, | |
| "NONLIVINGAREA_MODE": 0.0000, | |
| "APARTMENTS_MEDI": 0.0247, | |
| "BASEMENTAREA_MEDI": 0.0369, | |
| "YEARS_BEGINEXPLUATATION_MEDI": 0.9722, | |
| "YEARS_BUILD_MEDI": 0.6192, | |
| "COMMONAREA_MEDI": 0.0143, | |
| "ELEVATORS_MEDI": 0.00, | |
| "ENTRANCES_MEDI": 0.0690, | |
| "FLOORSMAX_MEDI": 0.0833, | |
| "FLOORSMIN_MEDI": 0.1250, | |
| "LANDAREA_MEDI": 0.0369, | |
| "LIVINGAPARTMENTS_MEDI": 0.0202, | |
| "LIVINGAREA_MEDI": 0.0190, | |
| "NONLIVINGAPARTMENTS_MEDI": 0.0000, | |
| "NONLIVINGAREA_MEDI": 0.0000, | |
| "FONDKAPREMONT_MODE": None, | |
| "HOUSETYPE_MODE": None, | |
| "TOTALAREA_MODE": None, | |
| "WALLSMATERIAL_MODE": None, | |
| "EMERGENCYSTATE_MODE": None, | |
| "OBS_30_CNT_SOCIAL_CIRCLE": 2.0, | |
| "DEF_30_CNT_SOCIAL_CIRCLE": 2.0, | |
| "OBS_60_CNT_SOCIAL_CIRCLE": 2.0, | |
| "DEF_60_CNT_SOCIAL_CIRCLE": 2.0, | |
| "DAYS_LAST_PHONE_CHANGE": -1134.0, | |
| "FLAG_DOCUMENT_2": 0, | |
| "FLAG_DOCUMENT_3": 1, | |
| "FLAG_DOCUMENT_4": 0, | |
| "FLAG_DOCUMENT_5": 0, | |
| "FLAG_DOCUMENT_6": 0, | |
| "FLAG_DOCUMENT_7": 0, | |
| "FLAG_DOCUMENT_8": 0, | |
| "FLAG_DOCUMENT_9": 0, | |
| "FLAG_DOCUMENT_10": 0, | |
| "FLAG_DOCUMENT_11": 0, | |
| "FLAG_DOCUMENT_12": 0, | |
| "FLAG_DOCUMENT_13": 0, | |
| "FLAG_DOCUMENT_14": 0, | |
| "FLAG_DOCUMENT_15": 0, | |
| "FLAG_DOCUMENT_16": 0, | |
| "FLAG_DOCUMENT_17": 0, | |
| "FLAG_DOCUMENT_18": 0, | |
| "FLAG_DOCUMENT_19": 0, | |
| "FLAG_DOCUMENT_20": 0, | |
| "FLAG_DOCUMENT_21": 0, | |
| "AMT_REQ_CREDIT_BUREAU_HOUR": 0.0, | |
| "AMT_REQ_CREDIT_BUREAU_DAY": 0.0, | |
| "AMT_REQ_CREDIT_BUREAU_WEEK": 0.0, | |
| "AMT_REQ_CREDIT_BUREAU_MON": 0.0, | |
| "AMT_REQ_CREDIT_BUREAU_QRT": 0.0, | |
| "AMT_REQ_CREDIT_BUREAU_YEAR": 1.0 | |
| } | |
| } |