Create app.py
Browse files
app.py
ADDED
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# -*- coding: utf-8 -*-
|
2 |
+
|
3 |
+
import pandas as pd
|
4 |
+
from pycaret.regression import load_model, predict_model
|
5 |
+
from fastapi import FastAPI
|
6 |
+
from pydantic import BaseModel, create_model
|
7 |
+
import uvicorn
|
8 |
+
|
9 |
+
|
10 |
+
app = FastAPI(
|
11 |
+
title="API de Prédiction de la Consommation de Gaz Naturel",
|
12 |
+
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.",
|
13 |
+
version="1.0.0",
|
14 |
+
docs_url="/docs"
|
15 |
+
)
|
16 |
+
|
17 |
+
|
18 |
+
model = load_model("api_gaz")
|
19 |
+
|
20 |
+
|
21 |
+
class InputModel(BaseModel):
|
22 |
+
state: str
|
23 |
+
statecode: int
|
24 |
+
year: int
|
25 |
+
price: float
|
26 |
+
eprice: float
|
27 |
+
oprice: float
|
28 |
+
lprice: float
|
29 |
+
heating: int
|
30 |
+
income: float
|
31 |
+
|
32 |
+
class OutputModel(BaseModel):
|
33 |
+
prediction: float
|
34 |
+
|
35 |
+
|
36 |
+
@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.")
|
37 |
+
def predict(data: InputModel):
|
38 |
+
"""
|
39 |
+
#Paramètres d'entrée :
|
40 |
+
- *state* : État (par exemple, 'TX' pour Texas)
|
41 |
+
- *statecode* : Code de l'état (par exemple, 44)
|
42 |
+
- *year* : Année (par exemple, 1980)
|
43 |
+
- *price* : Prix du gaz naturel
|
44 |
+
- *eprice* : Prix ajusté de l'énergie
|
45 |
+
- *oprice* : Prix de l'énergie autre que le gaz naturel
|
46 |
+
- *lprice* : Prix du gaz naturel en dollars constants
|
47 |
+
- *heating* : Degrés-jours de chauffage
|
48 |
+
- *income* : Revenu moyen
|
49 |
+
|
50 |
+
#Sortie :
|
51 |
+
- *prediction* : Prédiction de la consommation de gaz naturel
|
52 |
+
"""
|
53 |
+
data = pd.DataFrame([data.dict()])
|
54 |
+
predictions = predict_model(model, data=data)
|
55 |
+
return {"prediction": predictions["prediction_label"].iloc[0]}
|
56 |
+
|