Docfile commited on
Commit
350218f
·
verified ·
1 Parent(s): 1b92adf

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +56 -0
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
+