test-backend / app.py
kjdeka's picture
Upload folder using huggingface_hub
7f73f05 verified
import joblib
import pandas as pd
from flask import Flask, request, jsonify
# Initialize Flask app with a name
#revenue_predictor_api = Flask("SuperKart Revenue Predictor")
backend_predictor_api = Flask("Backend Predictor")
# Load the trained prediction model
model = joblib.load("personal_loan.joblib")
# Define a route for the home page
@backend_predictor_api.get('/')
def home():
return "Welcome to the Backend Prediction API!"
# Define an endpoint to predict for a single data
@backend_predictor_api.post('/v1/dijakbn')
def predict_dijak_backend():
# Get JSON data from the request
backend_data = request.get_json()
# Extract relevant backend features from the input data
sample = {
'ID': backend_data['ID'],
'Age': backend_data['Age'],
'Experience': backend_data['Experience'],
'Income': backend_data['Income'],
'ZIPCode': backend_data['ZIPCode'],
'Family': backend_data['Family'],
'CCAvg': backend_data['CCAvg'],
'Education': backend_data['Education'],
'Mortgage': backend_data['Mortgage'],
'Securities_Account': backend_data['Securities_Account'],
'CD_Account': backend_data['CD_Account'],
'Online': backend_data['Online'],
'CreditCard': backend_data['CreditCard']
}
# Convert the extracted data into a DataFrame
input_data = pd.DataFrame([sample])
# Make a prediction using the trained model
prediction = model.predict(input_data).tolist()[0]
# Return the prediction as a JSON response
return jsonify({'Prediction': prediction})
# Define an endpoint to predict for a batch of input
@backend_predictor_api.post('/v1/dijakbnbatch')
def predict_dijak_backend_batch():
# Get the uploaded CSV file from the request
file = request.files['file']
# Read the file into a DataFrame
input_data = pd.read_csv(file)
# Drop Product_Id before prediction
features = input_data.drop("Personal_Loan", axis=1)
# Make predictions
predictions = model.predict(features).tolist()
# Build structured output with Product_Id, Store_Id, and rounded output
output_list = []
for i in range(len(predictions)):
output_list.append({
#"Product_Id": input_data.loc[i, "Product_Id"],
#"Store_Id": input_data.loc[i, "Store_Id"],
"Prediction": round(predictions[i], 2)
})
return jsonify(output_list)
# Run the Flask app in debug mode
if __name__ == '__main__':
app.run(debug=True)