| | import joblib |
| | import pandas as pd |
| | from flask import Flask, request, jsonify |
| |
|
| | |
| | churn_predictor_api = Flask("Customer Churn Predictor") |
| |
|
| | |
| | model = joblib.load("churn_prediction_model_v1_0.joblib") |
| |
|
| | |
| | @churn_predictor_api.get('/') |
| | def home(): |
| | return "Welcome to the Customer Churn Prediction API!" |
| |
|
| | |
| | @churn_predictor_api.post('/v1/customer') |
| | def predict_churn(): |
| | |
| | customer_data = request.get_json() |
| |
|
| | |
| | sample = { |
| | 'CreditScore': customer_data['CreditScore'], |
| | 'Geography': customer_data['Geography'], |
| | 'Age': customer_data['Age'], |
| | 'Tenure': customer_data['Tenure'], |
| | 'Balance': customer_data['Balance'], |
| | 'NumOfProducts': customer_data['NumOfProducts'], |
| | 'HasCrCard': customer_data['HasCrCard'], |
| | 'IsActiveMember': customer_data['IsActiveMember'], |
| | 'EstimatedSalary': customer_data['EstimatedSalary'] |
| | } |
| |
|
| | |
| | input_data = pd.DataFrame([sample]) |
| |
|
| | |
| | prediction = model.predict(input_data).tolist()[0] |
| |
|
| | |
| | prediction_label = "churn" if prediction == 1 else "not churn" |
| |
|
| | |
| | return jsonify({'Prediction': prediction_label}) |
| |
|
| | |
| | @churn_predictor_api.post('/v1/customerbatch') |
| | def predict_churn_batch(): |
| | |
| | file = request.files['file'] |
| |
|
| | |
| | input_data = pd.read_csv(file) |
| |
|
| | |
| | predictions = [ |
| | 'Churn' if x == 1 |
| | else "Not Churn" |
| | for x in model.predict(input_data.drop("CustomerId",axis=1)).tolist() |
| | ] |
| |
|
| | cust_id_list = input_data.CustomerId.values.tolist() |
| | output_dict = dict(zip(cust_id_list, predictions)) |
| |
|
| | return output_dict |
| |
|
| | |
| | if __name__ == '__main__': |
| | app.run(debug=True) |
| |
|