tifischer commited on
Commit
da2803d
·
verified ·
1 Parent(s): 8058b84

Upload folder using huggingface_hub

Browse files
Files changed (2) hide show
  1. app.py +24 -24
  2. churn_prediction_model_v1_0.joblib +2 -2
app.py CHANGED
@@ -11,39 +11,39 @@ model = load_model()
11
 
12
  # Streamlit UI for Customer Churn Prediction
13
  st.title("Customer Churn Prediction App")
14
- st.write("The Customer Churn Prediction App is an internal tool for bank staff that predicts whether customers are at risk of churning based on their details.")
15
- st.write("Kindly enter the customer details to check whether they are likely to churn.")
16
-
17
- # Collect user input
18
- CreditScore = st.number_input("Credit Score (customer's credit score)", min_value=300, max_value=900, value=650)
19
- Geography = st.selectbox("Geography (country where the customer resides)", ["France", "Germany", "Spain"])
20
- Age = st.number_input("Age (customer's age in years)", min_value=18, max_value=100, value=30)
21
- Tenure = st.number_input("Tenure (number of years the customer has been with the bank)", value=12)
22
- Balance = st.number_input("Account Balance (customer’s account balance)", min_value=0.0, value=10000.0)
23
- NumOfProducts = st.number_input("Number of Products (number of products the customer has with the bank)", min_value=1, value=1)
24
- HasCrCard = st.selectbox("Has Credit Card?", ["Yes", "No"])
25
- IsActiveMember = st.selectbox("Is Active Member?", ["Yes", "No"])
26
- EstimatedSalary = st.number_input("Estimated Salary (customer’s estimated salary)", min_value=0.0, value=50000.0)
27
 
28
  # Convert categorical inputs to match model training
29
  input_data = pd.DataFrame([{
30
- 'CreditScore': CreditScore,
31
- 'Geography': Geography,
32
- 'Age': Age,
 
 
 
33
  'Tenure': Tenure,
34
- 'Balance': Balance,
35
- 'NumOfProducts': NumOfProducts,
36
- 'HasCrCard': 1 if HasCrCard == "Yes" else 0,
37
- 'IsActiveMember': 1 if IsActiveMember == "Yes" else 0,
38
- 'EstimatedSalary': EstimatedSalary
39
  }])
40
 
41
- # Set the classification threshold
42
- classification_threshold = 0.45
43
 
44
  # Predict button
45
  if st.button("Predict"):
46
  prediction_proba = model.predict_proba(input_data)[0, 1]
47
  prediction = (prediction_proba >= classification_threshold).astype(int)
48
  result = "churn" if prediction == 1 else "not churn"
49
- st.write(f"Based on the information provided, the customer is likely to {result}.")
 
 
11
 
12
  # Streamlit UI for Customer Churn Prediction
13
  st.title("Customer Churn Prediction App")
14
+ st.write("This tool predicts customer churn risk based on their details. Enter the required information below.")
15
+
16
+ # Collect user input based on dataspathet columns
17
+ Partner = st.selectbox("Does the customer have a partner?", ["Yes", "No"])
18
+ Dependents = st.selectbox("Does the customer have dependents?", ["Yes", "No"])
19
+ PhoneService = st.selectbox("Does the customer have phone service?", ["Yes", "No"])
20
+ InternetService = st.selectbox("Type of Internet Service", ["DSL", "Fiber optic", "No"])
21
+ Contract = st.selectbox("Type of Contract", ["Month-to-month", "One year", "Two year"])
22
+ PaymentMethod = st.selectbox("Payment Method", ["Electronic check", "Mailed check", "Bank transfer", "Credit card"])
23
+ Tenure = st.number_input("Tenure (Months with the company)", min_value=0, value=12)
24
+ MonthlyCharges = st.number_input("Monthly Charges", min_value=0.0, value=50.0)
25
+ TotalCharges = st.number_input("Total Charges", min_value=0.0, value=600.0)
 
26
 
27
  # Convert categorical inputs to match model training
28
  input_data = pd.DataFrame([{
29
+ 'Partner': 1 if Partner == "Yes" else 0,
30
+ 'Dependents': 1 if Dependents == "Yes" else 0,
31
+ 'PhoneService': 1 if PhoneService == "Yes" else 0,
32
+ 'InternetService': InternetService,
33
+ 'Contract': Contract,
34
+ 'PaymentMethod': PaymentMethod,
35
  'Tenure': Tenure,
36
+ 'MonthlyCharges': MonthlyCharges,
37
+ 'TotalCharges': TotalCharges
 
 
 
38
  }])
39
 
40
+ # Set classification threshold
41
+ classification_threshold = 0.5
42
 
43
  # Predict button
44
  if st.button("Predict"):
45
  prediction_proba = model.predict_proba(input_data)[0, 1]
46
  prediction = (prediction_proba >= classification_threshold).astype(int)
47
  result = "churn" if prediction == 1 else "not churn"
48
+ st.write(f"Prediction: The customer is likely to **{result}**.")
49
+ st.write(f"Churn Probability: {prediction_proba:.2f}")
churn_prediction_model_v1_0.joblib CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:fbfe0e0f47d3294eab34fe663bdf36d11f18930601e6258872ce4edf0b881ac4
3
- size 302538
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1890379bd8a492620e028476e5e1c8f63cffabc25741b518f80a8c2ef11c919b
3
+ size 340069