| |
|
|
| import pandas as pd |
| from pycaret.regression import load_model, predict_model |
| from fastapi import FastAPI |
| from fastapi.responses import RedirectResponse |
|
|
| from pydantic import BaseModel, Field |
| 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 = Field(..., example="TX", description="État (par exemple, 'TX' pour Texas)") |
| statecode: int = Field(..., example=44, description="Code de l'état (par exemple, 44)") |
| year: int = Field(..., example=1980, description="Année (par exemple, 1980)") |
| price: float = Field(..., example=3.4, description="Prix du gaz naturel") |
| eprice: float = Field(..., example=4.87, description="Prix ajusté de l'énergie") |
| oprice: float = Field(..., example=37.92, description="Prix de l'énergie autre que le gaz naturel") |
| lprice: float = Field(..., example=3.21, description="Prix du gaz naturel en dollars constants") |
| heating: int = Field(..., example=2145, description="Degrés-jours de chauffage") |
| income: float = Field(..., example=11393.46, description="Revenu moyen") |
|
|
| class OutputModel(BaseModel): |
| prediction: float = Field(..., example=224800, description="Prédiction de la consommation de gaz naturel") |
|
|
|
|
| @app.get("/", include_in_schema=False) |
| def root(): |
| return RedirectResponse(url="/docs") |
|
|
| |
| @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, 'GA' pour Gabon) |
| - 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]} |
|
|
|
|