CoolFace
Apppublic

versatile-jack/backend-space

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes
app.py71 linesDownload Raw Back to root
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