Spaces:
Sleeping
Sleeping
File size: 2,846 Bytes
5ef5dcd | 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 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | import joblib
import pandas as pd
from fastapi import FastAPI
from fastapi.responses import HTMLResponse
from pydantic import BaseModel
app = FastAPI(
title="API de prédiction de prix Getaround",
description="API permettant de prédire le prix de location par jour d’un véhicule",
version="1.0",
docs_url="/api-docs"
)
model = joblib.load("model.joblib")
class CarFeatures(BaseModel):
model_key: str
mileage: int
engine_power: int
fuel: str
paint_color: str
car_type: str
private_parking_available: bool
has_gps: bool
has_air_conditioning: bool
automatic_car: bool
has_getaround_connect: bool
has_speed_regulator: bool
winter_tires: bool
@app.get("/")
def accueil():
return {"message": "Bienvenue sur l'API de prédiction de prix Getaround"}
@app.post("/predict")
def predict(features: CarFeatures):
data = pd.DataFrame([features.model_dump()])
prediction = model.predict(data)[0]
return {
"prix_location_par_jour": round(prediction, 2)
}
@app.get("/docs", response_class=HTMLResponse)
def documentation():
return """
<html>
<head>
<title>Documentation API Getaround</title>
</head>
<body>
<h1>🚗 API de prédiction de prix Getaround</h1>
<p>
Cette API permet de prédire le prix de location par jour d’un véhicule
en fonction de ses caractéristiques.
</p>
<h2>Endpoints disponibles</h2>
<h3>GET /</h3>
<p><strong>Description :</strong> retourne un message de bienvenue.</p>
<p><strong>Entrée :</strong> aucune.</p>
<p><strong>Sortie attendue :</strong></p>
<pre>
{
"message": "Bienvenue sur l'API de prédiction de prix Getaround"
}
</pre>
<h3>POST /predict</h3>
<p><strong>Description :</strong> prédit le prix de location par jour d’un véhicule.</p>
<p><strong>Entrée requise :</strong> un objet JSON contenant les caractéristiques du véhicule.</p>
<pre>
{
"model_key": "Peugeot",
"mileage": 50000,
"engine_power": 120,
"fuel": "diesel",
"paint_color": "black",
"car_type": "sedan",
"private_parking_available": true,
"has_gps": true,
"has_air_conditioning": true,
"automatic_car": false,
"has_getaround_connect": true,
"has_speed_regulator": true,
"winter_tires": false
}
</pre>
<p><strong>Sortie attendue :</strong></p>
<pre>
{
"prix_location_par_jour": 100.35
}
</pre>
<h2>Tester l’API</h2>
<p>
Une documentation interactive Swagger est disponible ici :
<a href="/api-docs">/api-docs</a>
</p>
</body>
</html>
""" |