surnellas's picture
Upload folder using huggingface_hub
65c9451 verified
# Import necessary libraries
import numpy as np
import joblib # For loading the serialized model
import pandas as pd # For data manipulation
from flask import Flask, request, jsonify # For creating the Flask API
import pandas as pd
import numpy as np
from sklearn.base import BaseEstimator, TransformerMixin
from sklearn.preprocessing import PowerTransformer, OrdinalEncoder
from sklearn.pipeline import Pipeline
from sklearn.compose import ColumnTransformer
# print( " Trying to load XGBoost model using joblib")
model = joblib.load("final_xgb_pipeline.joblib")
# print("Model loaded successfully!")
# Initialize the Flask application
sales_predictor_api = Flask("SuperKart Sales Prediction")
# Define a route for the home page (GET request)
@sales_predictor_api.get('/')
def home():
"""
This function handles GET requests to the root URL ('/') of the API.
It returns a simple welcome message.
"""
return "Welcome to the SuperKart Sales Prediction API!"
# Define an endpoint for single property prediction (POST request)
@sales_predictor_api.post('/v1/sales')
def predict_sales():
"""
This function handles POST requests to the '/v1/sales' endpoint.
It expects a JSON payload containing property details and returns
the predicted rental price as a JSON response.
"""
# Get the JSON data from the request body
property_data = request.get_json()
# Extract relevant features from the JSON data
sample = {
'Product_Weight': property_data['Product_Weight'],
'Product_Allocated_Area': property_data['Product_Allocated_Area'],
'Product_MRP': property_data['Product_MRP'],
'Product_Sugar_Content': property_data['Product_Sugar_Content'],
'Product_Type': property_data['Product_Type'],
'Store_Establishment_Year': property_data['Store_Establishment_Year'],
'Store_Size': property_data['Store_Size'],
'Store_Location_City_Type': property_data['Store_Location_City_Type'],
# 'pid_c2': property_data['pid_c2'],
'Store_Type': property_data['Store_Type']
}
# print( ' recevied request from client ')
# Convert the extracted data into a Pandas DataFrame
input_data = pd.DataFrame([sample])
# print("data recevied = ", input_data)
# Make prediction (get log_price)
predicted_sales = model.predict(input_data)[0]
predicted_sales = float(predicted_sales) # convert to native float
# print ("Sales predicted = ", predicted_sales)
return jsonify({'Predicted Sales': predicted_sales})
# Run the Flask application in debug mode if this script is executed directly
if __name__ == '__main__':
sales_predictor_api.run(debug=True)