# -*- coding: utf-8 -*- import pandas as pd from pycaret.regression import load_model, predict_model from fastapi import FastAPI from pydantic import BaseModel, create_model import uvicorn app = FastAPI( title="API de Prédiction de la Consommation de Gaz Naturel", description="Cette API permet de prédire la consommation de gaz naturel basée sur plusieurs paramètres tels que l'état, le code de l'état, l'année, les prix de l'énergie, les degrés-jours de chauffage et le revenu.", version="1.0.0", docs_url="/docs" ) model = load_model("best_pipeline") class InputModel(BaseModel): state: str statecode: int year: int price: float eprice: float oprice: float lprice: float heating: int income: float class OutputModel(BaseModel): prediction: float @app.post("/predict", response_model=OutputModel, summary="Prédire la Consommation de Gaz Naturel", description="Prédit la consommation de gaz naturel basée sur les paramètres fournis.") def predict(data: InputModel): """ #Paramètres d'entrée : - *state* : État (par exemple, 'TX' pour Texas) - *statecode* : Code de l'état (par exemple, 44) - *year* : Année (par exemple, 1980) - *price* : Prix du gaz naturel - *eprice* : Prix ajusté de l'énergie - *oprice* : Prix de l'énergie autre que le gaz naturel - *lprice* : Prix du gaz naturel en dollars constants - *heating* : Degrés-jours de chauffage - *income* : Revenu moyen #Sortie : - *prediction* : Prédiction de la consommation de gaz naturel """ data = pd.DataFrame([data.dict()]) predictions = predict_model(model, data=data) return {"prediction": predictions["prediction_label"].iloc[0]}