File size: 1,934 Bytes
8d38f55
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5d605bc
8d38f55
 
5d605bc
 
 
 
8d38f55
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4b98b11
 
8d38f55
 
 
 
5d605bc
 
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

import joblib
from flask import Flask, request, jsonify
import pandas as pd
import numpy as np

# Load the trained model and preprocessor
model = joblib.load('final_model.joblib')
preprocessor = joblib.load('preprocessor.joblib')

superkart_revenue_forecaster_api = Flask("SuperKart Sales Revenue Forecaster")

# Define a route for the home page
@superkart_revenue_forecaster_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 Revenue Forecaster - By Vidyasagar Chitchula'

# Define the prediction route
#@superkart_revenue_forecaster_api.route('/forecast_revenue', methods=['POST'])

# Define an endpoint to predict the sales revenue
@superkart_revenue_forecaster_api.post('/v1/forecastrevenue')
def forecast_Revenue():
    try:
        data = request.get_json()

        # Convert input data to a Pandas DataFrame
        input_df = pd.DataFrame([data])

        # Recreate the 'Store_Age' feature if 'Store_Establishment_Year' is provided
        if 'Store_Establishment_Year' in input_df.columns:
            input_df['Store_Age'] = 2025 - input_df['Store_Establishment_Year']
            input_df = input_df.drop('Store_Establishment_Year', axis=1)

        # Drop 'Product_Id' if it exists in the input
        if 'Product_Id' in input_df.columns:
            input_df = input_df.drop('Product_Id', axis=1)

        # Preprocess the input data
        processed_data = preprocessor.transform(input_df)

        # Make prediction
        prediction = model.predict(processed_data)

        # Convert numpy.float32 to standard float before JSON serialization
        return jsonify({'predicted_sales': float(prediction[0])})

    except Exception as e:
        return jsonify({'error': str(e)}), 400

#if __name__ == '__main__':
 #   superkart_revenue_forecaster_api.run(host='0.0.0.0', port=5000)