File size: 2,512 Bytes
350218f
 
 
 
 
a67aec6
350218f
 
 
 
 
 
 
 
 
 
 
d200fd3
350218f
 
 
a67aec6
 
 
 
 
 
 
 
 
350218f
 
a67aec6
350218f
a67aec6
350218f
 
 
a67aec6
34f2ee6
a67aec6
 
 
 
 
 
 
 
 
 
 
350218f
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# -*- coding: utf-8 -*-

import pandas as pd
from pycaret.regression import load_model, predict_model
from fastapi import FastAPI
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")

# Define predict function
@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]}