CoolFace
Apppublic

PatRzR/GAA_API

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes
app.py107 linesDownload Raw Back to root
1 2#3# Import necessary libraries4 5import mlflow 6import uvicorn7import pandas as pd 8 9from pydantic import BaseModel, Field10from typing import Literal, List, Union11from fastapi import FastAPI, File, UploadFile12import joblib13 14# Description of the API15 16description = """ API pour ML model prediction de prix de location"""17 18# Metadata for the API documentation19 20tags_metadata = [21    {22        "name": "Machine Learning",23        "description": "post 13 features to /predict!",24    },25 26]27 28# Create the FastAPI app29app = FastAPI(30    title="getaround_Price_prediction",31    description=description,32    version="0.1",33    contact={34        "name": "PRzR",35        "url": "https://GitHub.com/PRzR",36    },37    openapi_tags=tags_metadata38)39 40# Defnition des classes pour les modèles de données (pour valider les entrées)41 42class PredictionFeatures(BaseModel):43    mileage: float = Field(..., description="Kilométrage du véhicule en km", example=45000)44    engine_power: float = Field(..., description="Puissance moteur en chevaux", example=110)45    model_key: str = Field(..., description="Modèle du véhicule", example="Clio")46    fuel: str = Field(..., description="Type de carburant", example="diesel")47    paint_color: str = Field(..., description="Couleur de la peinture", example="black")48    car_type: str = Field(..., description="Type de véhicule", example="sedan")49    private_parking_available: bool = Field(..., description="Parking privé disponible", example=True)50    has_gps: bool = Field(..., description="Véhicule avec GPS", example=True)51    has_air_conditioning: bool = Field(..., description="Climatisation", example=True)52    automatic_car: bool = Field(..., description="Boîte automatique", example=False)53    has_getaround_connect: bool = Field(..., description="Équipé de Getaround Connect", example=True)54    has_speed_regulator: bool = Field(..., description="Régulateur de vitesse", example=True)55    winter_tires: bool = Field(..., description="Pneus hiver", example=False)56 57    has_speed_regulator: bool = Field(..., description="Régulateur de vitesse", example=True)58    winter_tires: bool = Field(..., description="Pneus hiver", example=False)59 60 61#mlflow.set_tracking_uri("https://patrzr-mlflow-server-demo.hf.space/")62 63# Load model from MLflow64#logged_model = 'runs:/ed35d773308245a395ce888e362069b5/RF_200_CV5'65loaded_model = mlflow.pyfunc.load_model("./model")66 67 68 69# Definition des endpoints pour l'API70 71 72@app.post("/predict", tags=["Machine Learning"])73async def predict(predictionFeatures: PredictionFeatures):74    """ Endpoint pour prédire le prix de location d'un véhicule. 75    Args:76        77    mileage: Kilométrage du véhicule en km, example=4500078    engine_power: Puissance moteur en chevaux, example=11079    model_key: Modèle du véhicule, example="Clio80    fuel: Type de carburant, example="diesel"81    paint_color:  Couleur de la peinture, example="black"82    car_type: Type de véhicule, example="sedan"83    private_parking_available: Parking privé disponible, example=True84    has_gps: Véhicule avec GPS, example=True85    has_air_conditioning: Climatisation, example=True86    automatic_car: bool = Boîte automatique, example=False87    has_getaround_connect: "Équipé de Getaround Connect", example=True88    has_speed_regulator: Régulateur de vitesse", example=True89    winter_tires: bool = Field(..., description="Pneus hiver", example=False90    has_speed_regulator: "Régulateur de vitesse", example=True91    winter_tires: Pneus hiver, example=False92    Returns:93        dict: Dictionnaire contenant la prédiction du prix de location.94    95    """96    # Read data (convert input to DataFrame)97    df = pd.DataFrame(dict(predictionFeatures), index=[0])  98 99    # Predict on a Pandas DataFrame.100    prediction = loaded_model.predict(df)101 102    # Format response103    response = {"prediction Price": prediction.tolist()[0]}104 105    return response106 107