Backend / app.py
Shalyn's picture
Upload folder using huggingface_hub
cecf9f2 verified
raw
history blame
2.73 kB
import joblib
import pandas as pd
from flask import Flask, request, jsonify
#initialise flask app
sales_forecast_api = Flask('Sales forecasting')
# load the model
model = joblib.load('sales_forecast_v1_0.joblib')
#define home page
@sales_forecast_api.get('/')
def home():
return 'Welcome to the sales forecase api'
#define an endpoint for prediction
@sales_forecast_api.post('/v1/sales')
def sales_predict():
#get data from json request
sales_data = request.get_json()
#get relevant details
sample = {
'Product_Weight': sales_data['Product_Weight'],
'Product_Sugar_Content': sales_data['Product_Sugar_Content'],
'Product_Allocated_Area': sales_data['Product_Allocated_Area'],
'Product_Type': sales_data['Product_Type'],
'Product_MRP': sales_data['Product_MRP'],
'Store_Establishment_Year': sales_data['Store_Establishment_Year'],
'Store_Size': sales_data['Store_Size'],
'Store_Location_City_Type': sales_data['Store_Location_City_Type'],
'Store_Type': sales_data['Store_Type']
}
input_data = pd.DataFrame([sample])
#convert the categorical to dummies
categorical_columns_for_dummies = ['Product_Sugar_Content','Product_Type','Store_Size','Store_Location_City_Type','Store_Type']
input_df_dummies = pd.get_dummies(input_data, columns=categorical_columns_for_dummies, drop_first=True)
#make model to predict
prediction = model.predict(input_df_dummies.reindex(columns=X_train.columns, fill_value=0))
return jsonify({'Prediction':prediction[0]})
#defining endpoint for batch
@sales_forecast_api.post('/v1/salesbatch')
def sales_batch_predict():
#get the file from the request
file = request.files['file']
#read the file to df
input_data = pd.read_csv(file)
#convert the categorical to dummies
categorical_columns_for_dummies = ['Product_Sugar_Content','Product_Type','Store_Size','Store_Location_City_Type','Store_Type']
input_df_dummies = pd.get_dummies(input_data, columns=categorical_columns_for_dummies, drop_first=False)
input_df_aligned =input_df_dummies.reindex(columns=X_train.columns, fill_value=0)
#predict
predictions = model.predict(input_df_aligned).tolist() # Predict and convert to list
product_id_list = input_data.Product_Id.tolist() # Convert to list
store_id_list = input_data.Store_Id.tolist() # Convert to list
# Create a list of dictionaries for the output
output_list = []
for i in range(len(product_id_list)):
output_list.append({
'Product_Id': product_id_list[i],
'Store_Id': store_id_list[i],
'Prediction': predictions[i]
})
return jsonify(output_list)
#run the flask app in debug mode
if __name__ == '__main__':
sales_forecast_api.run(debug=True)