|
|
|
|
|
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("api_gaz") |
|
|
|
|
|
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]} |
|
|
|
|