Spaces:
Sleeping
Sleeping
Download scripts/generate_predictions_sample.py from rriviere/attrition-api-dev: direct link, hf CLI and curl.
- Browser
- Download file 1.88 kB
-
https://huggingface.co/spaces/rriviere/attrition-api-dev/resolve/main/scripts/generate_predictions_sample.py
- Command line
-
hf download hf://spaces/rriviere/attrition-api-dev/scripts/generate_predictions_sample.py
-
curl -L -o generate_predictions_sample.py https://huggingface.co/spaces/rriviere/attrition-api-dev/resolve/main/scripts/generate_predictions_sample.py
1.88 kB
| import sys | |
| import os | |
| sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | |
| from dotenv import load_dotenv | |
| load_dotenv() | |
| import pandas as pd | |
| from sqlalchemy.orm import sessionmaker | |
| from sqlalchemy import create_engine | |
| from app.db.models import Employee | |
| from ml_model.loader import load_pipeline | |
| from app.schemas.prediction import PredictionInput | |
| EXAMPLES_DIR = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "examples") | |
| INPUT_PATH = os.path.join(EXAMPLES_DIR, "input_sample.csv") | |
| OUTPUT_PATH = os.path.join(EXAMPLES_DIR, "output_sample.csv") | |
| N_SAMPLES = 10 | |
| FEATURE_COLUMNS = list(PredictionInput.model_fields.keys()) | |
| def generate(): | |
| db_url = ( | |
| f"postgresql+psycopg2://{os.getenv('DB_USER')}:{os.getenv('DB_PASSWORD')}" | |
| f"@{os.getenv('DB_HOST')}:{os.getenv('DB_PORT')}/{os.getenv('DB_NAME')}" | |
| ) | |
| SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=create_engine(db_url)) | |
| session = SessionLocal() | |
| try: | |
| rows = session.query(Employee).limit(N_SAMPLES).all() | |
| inputs = pd.DataFrame( | |
| [{col: getattr(e, col) for col in FEATURE_COLUMNS} for e in rows] | |
| ) | |
| finally: | |
| session.close() | |
| pipeline, threshold = load_pipeline() | |
| probas = pipeline.predict_proba(inputs.copy())[:, 1] | |
| predictions = (probas >= threshold).astype(int) | |
| os.makedirs(EXAMPLES_DIR, exist_ok=True) | |
| inputs.to_csv(INPUT_PATH, index=False) | |
| print(f"Fichier généré : {INPUT_PATH} ({N_SAMPLES} lignes)") | |
| outputs = pd.DataFrame({ | |
| "prediction": predictions, | |
| "label": ["Quitte" if p == 1 else "Reste" for p in predictions], | |
| "probabilite": probas.round(4), | |
| }) | |
| outputs.to_csv(OUTPUT_PATH, index=False) | |
| print(f"Fichier généré : {OUTPUT_PATH} ({N_SAMPLES} lignes)") | |
| if __name__ == "__main__": | |
| generate() | |