| import joblib |
| import pandas as pd |
| from flask import Flask, request, jsonify |
|
|
| |
| sales_forecast_api = Flask('Sales forecasting') |
|
|
| |
|
|
| model = joblib.load('sales_forecast_v1_0.joblib') |
|
|
| |
| @sales_forecast_api.get('/') |
| def home(): |
| return 'Welcome to the sales forecase api' |
|
|
| |
| @sales_forecast_api.post('/v1/sales') |
| def sales_predict(): |
| |
| sales_data = request.get_json() |
|
|
| |
| 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]) |
|
|
| |
| 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) |
|
|
| |
| prediction = model.predict(input_df_dummies.reindex(columns=X_train.columns, fill_value=0)) |
|
|
| return jsonify({'Prediction':prediction[0]}) |
|
|
|
|
| |
| @sales_forecast_api.post('/v1/salesbatch') |
|
|
| def sales_batch_predict(): |
| |
| file = request.files['file'] |
| |
| input_data = pd.read_csv(file) |
|
|
| |
| 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) |
|
|
| |
| predictions = model.predict(input_df_aligned).tolist() |
| product_id_list = input_data.Product_Id.tolist() |
| store_id_list = input_data.Store_Id.tolist() |
|
|
| |
| 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) |
|
|
| |
| if __name__ == '__main__': |
| sales_forecast_api.run(debug=True) |
|
|