Spaces:
Sleeping
Sleeping
| from fastapi import FastAPI | |
| from pydantic import BaseModel | |
| import mlflow.pyfunc | |
| import pandas as pd | |
| description = """ | |
| Bienvenue sur l'API de Getaround pour prédire le prix journalier de location d'une voiture en fonction de son année d'expérience! | |
| ## Point de terminaison d'introduction | |
| Pour tester le fonctionnement de l'API, vous pouvez utiliser le point de terminaison d'introduction suivant: | |
| * `/`: **GET** retourne la version de l'API et un message de bienvenue. | |
| ## Point de terminaison du prix de location | |
| Cette API permet de prédire le prix journalier de location d'une voiture. | |
| * `/price/{car_id}`: **GET** retourne le prix journalier de location d'une voiture en fonction de son identifiant. | |
| ## Machine Learning | |
| Cette terminaison de l'API permet de prédire le prix journalier de location d'une voiture en fonction de ses caractéristiques.. | |
| * `/predict` accepte une requête POST avec un JSON contenant une clé `YearsExperience` et retourne une prédiction du prix journalier de location d'une voiture. | |
| Check out documentation below 👇 for more information on each endpoint. | |
| """ | |
| tags_metadata = [ | |
| { | |
| "name": "Point de terminaison d'introduction", | |
| "description": "Terminaison simple de test", | |
| }, | |
| { | |
| "name": "Terminaison du prix de location", | |
| "description": "Point de terminaison pour obtenir le tarif journalier par **GET** d'une voiture en focntion de son identifiant.", | |
| }, | |
| { | |
| "name": "Machine Learning", | |
| "description": "Prediction du prix de location journalier d'un véhicule en fonction de ses caractéristiques.", | |
| }, | |
| ] | |
| app = FastAPI( | |
| title="Getaround API pour le prix journalier de location d'une voiture.", | |
| description=description, | |
| version="0.1", | |
| contact={ | |
| "name": "Francis Pradel", | |
| "url": "https://promotion.francispradel.fr", | |
| }, | |
| openapi_tags=tags_metadata, | |
| ) | |
| def greet_json(): | |
| return {"Hello": "World!"} | |
| class PredictionFeatures(BaseModel): | |
| YearsExperience: float | |
| #### SOME CODE #### | |
| ################### | |
| async def predict(predictionFeatures: PredictionFeatures): | |
| """ | |
| Prediction of salary for a given year of experience! | |
| """ | |
| # Read data | |
| years_experience = pd.DataFrame( | |
| {"YearsExperience": [predictionFeatures.YearsExperience]} | |
| ) | |
| # Log model from mlflow | |
| logged_model = "runs:/c09d09ef14e546b08f2f339d2c966da6/salary_estimator" # REPLACE WITH YOUR OWN RUN ID | |
| # Load model as a PyFuncModel. | |
| loaded_model = mlflow.pyfunc.load_model(logged_model) | |
| prediction = loaded_model.predict(years_experience) | |
| # Format response | |
| response = {"prediction": prediction.tolist()[0]} | |
| return response | |