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)
|