versatile-jack/backend-space
0
1import joblib2import pandas as pd3from flask import Flask, request, jsonify4 5# Initialize Flask app with a name6churn_predictor_api = Flask("Customer Churn Predictor")7 8# Load the trained churn prediction model9model = joblib.load("churn_prediction_model_v1_0 (2).joblib")10 11# Define a route for the home page12@churn_predictor_api.get('/')13def home():14 return "Welcome to the Customer Churn Prediction API!"15 16# Define an endpoint to predict churn for a single customer17@churn_predictor_api.post('/v1/customer')18def predict_churn():19 # Get JSON data from the request20 customer_data = request.get_json()21 22 # Extract relevant customer features from the input data23 sample = {24 'CreditScore': customer_data['CreditScore'],25 'Geography': customer_data['Geography'],26 'Age': customer_data['Age'],27 'Tenure': customer_data['Tenure'],28 'Balance': customer_data['Balance'],29 'NumOfProducts': customer_data['NumOfProducts'],30 'HasCrCard': customer_data['HasCrCard'],31 'IsActiveMember': customer_data['IsActiveMember'],32 'EstimatedSalary': customer_data['EstimatedSalary']33 }34 35 # Convert the extracted data into a DataFrame36 input_data = pd.DataFrame([sample])37 38 # Make a churn prediction using the trained model39 prediction = model.predict(input_data).tolist()[0]40 41 # Map prediction result to a human-readable label42 prediction_label = "churn" if prediction == 1 else "not churn"43 44 # Return the prediction as a JSON response45 return jsonify({'Prediction': prediction_label})46 47# Define an endpoint to predict churn for a batch of customers48@churn_predictor_api.post('/v1/customerbatch')49def predict_churn_batch():50 # Get the uploaded CSV file from the request51 file = request.files['file']52 53 # Read the file into a DataFrame54 input_data = pd.read_csv(file)55 56 # Make predictions for the batch data and convert raw predictions into a readable format57 predictions = [58 'Churn' if x == 159 else "Not Churn"60 for x in model.predict(input_data.drop("CustomerId",axis=1)).tolist()61 ]62 63 cust_id_list = input_data.CustomerId.values.tolist()64 output_dict = dict(zip(cust_id_list, predictions))65 66 return output_dict67 68# Run the Flask app in debug mode69if __name__ == '__main__':70 app.run(debug=True)71 