| |
|
| | import numpy as np
|
| | import joblib
|
| | import pandas as pd
|
| | from flask import Flask, request, jsonify
|
| |
|
| |
|
| | store_sales_predictor_api = Flask("Store_sales Price Predictor")
|
| |
|
| |
|
| | model = joblib.load("store_sales_prediction_model_v1_0.joblib")
|
| | print(model)
|
| |
|
| |
|
| | @store_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 Store Sales Prediction API!"
|
| |
|
| |
|
| | @store_sales_predictor_api.post('/v1/sales')
|
| | def predict_store_sales():
|
| | """
|
| | This function handles POST requests to the '/v1/sales' endpoint.
|
| | It expects a JSON payload containing property details and returns
|
| | the predicted sales as a JSON response.
|
| | """
|
| |
|
| | property_data = request.get_json()
|
| |
|
| |
|
| | sample = {
|
| | 'Product_Weight':property_data['Product_Weight'],
|
| | 'Product_Sugar_Content':property_data['Product_Sugar_Content'],
|
| | 'Product_Allocated_Area':property_data['Product_Allocated_Area'],
|
| | 'Product_Type':property_data['Product_Type'],
|
| | 'Product_MRP':property_data['Product_MRP'],
|
| | 'Store_Establishment_Year':property_data['Store_Establishment_Year'],
|
| | 'Store_Size':property_data['Store_Size'],
|
| | 'Store_Location_City_Type':property_data['Store_Location_City_Type'],
|
| | 'Store_Type':property_data['Store_Type']
|
| | }
|
| |
|
| |
|
| | input_data = pd.DataFrame([sample])
|
| |
|
| |
|
| | predicted_store_sales = model.predict(input_data)[0]
|
| |
|
| |
|
| | predicted_sales = predicted_store_sales
|
| |
|
| |
|
| | predicted_sales = round(float(predicted_sales), 2)
|
| |
|
| |
|
| | return jsonify({'Predicted Sales (in dollars)': predicted_sales})
|
| |
|
| |
|
| |
|
| | @store_sales_predictor_api.post('/v1/salesbatch')
|
| | def predict_store_sales_batch():
|
| | """
|
| | This function handles POST requests to the '/v1/salesbatch' endpoint.
|
| | It expects a CSV file containing property details for multiple properties
|
| | and returns the predicted sales as a dictionary in the JSON response.
|
| | """
|
| |
|
| | file = request.files['file']
|
| |
|
| |
|
| | input_data = pd.read_csv(file)
|
| |
|
| |
|
| | predicted_sales = model.predict(input_data.drop("Product_Id",axis=1)).tolist()
|
| |
|
| |
|
| | property_ids = input_data['Product_Id'].tolist()
|
| | output_dict = dict(zip(property_ids, predicted_sales))
|
| |
|
| |
|
| | return output_dict
|
| |
|
| |
|
| | if __name__ == '__main__':
|
| | store_sales_predictor_api.run(debug=True)
|
| |
|