import pickle import streamlit as st import pandas as pd with open('best_model_ada_tuning.pkl', 'rb') as file_1: model_svm_tuning = pickle.load(file_1) def run(): st.title("Online Retail Customer Churn Prediction") st.write("## by Putra Rizqa Yasira") st.write("### Batch SBY-004") with st.form(key='Form Parameter'): customerid = st.number_input("Customer Id : ",min_value=1001,max_value=999999,step=1) age = st.slider("Age :",18,99,1) gender = st.radio("Gender",["Male","Female","Prefer not to say"]) st.markdown('---') annualincome = st.number_input("Annual Income (in thousand) : ",min_value=0,max_value=999999,step=100) totalspend = st.number_input("Total Spend at Retail : ",min_value=0,max_value=999999,step=100) st.markdown('---') yearsascustomer = st.slider("Years as Customer :",0,30,1) numofpurchase = st.slider("Number of Purchase :",0,999,1) avgtransaction = st.number_input("Average Transaction Amount : ",min_value=0,max_value=999999,step=100) st.markdown('---') numofreturn = st.slider("Number of Return :",0,999,1) numofsupport = st.slider("Number of Support Contact :",0,999,1) st.markdown('---') satisfaction = st.radio("How Good Us?",["Very Good","Good","Neutral","Bad","Very Bad"]) lastdaypurchase = st.slider("Last Purchase Days ago :",0,999,1) email = st.radio("Give Us Your Email",["Nope","Of Course!"]) promotionresponse = st.radio("How About Our Promotion",["I Like To Know More!","I Don't Interest","Very Bad, Unsubscribed"]) submitted = st.form_submit_button('Predict') if gender == "Prefer not to say": gender = "Other" if satisfaction == "Very Good": satisfaction = 5 elif satisfaction == "Good": satisfaction = 4 elif satisfaction == "Neutral": satisfaction = 3 elif satisfaction == "Bad": satisfaction = 2 satisfaction = 1 if email == "Nope": email = False email = True if promotionresponse == "I Like To Know More!": promotionresponse = "Responded" elif promotionresponse == "I Don't Interest": promotionresponse = "Ignored" promotionresponse = "Unsubscribed" data_inf = { 'Customer_ID': customerid, 'Age': age, 'Gender':gender, 'Annual_Income':annualincome, 'Total_Spend':totalspend, 'Years_as_Customer':yearsascustomer, 'Num_of_Purchases':numofpurchase, 'Average_Transaction_Amount':avgtransaction, 'Num_of_Returns':numofreturn, 'Num_of_Support_Contacts':numofsupport, 'Satisfaction_Score':satisfaction, 'Last_Purchase_Days_Ago':lastdaypurchase, 'Email_Opt_In':email, 'Promotion_Response':promotionresponse } df = pd.DataFrame([data_inf]) def age_group(age): if age <= 18: return "teenager" elif age <= 59: return "adult" else: return "elderly" df['age_group'] = df['Age'].apply(age_group) if submitted: y_pred_inf = model_svm_tuning.predict(df) st.write('## Hasil Prediksi Klasifikasi Churn : ') if y_pred_inf == False: st.write("Customer Terklasifikasi Tidak Churn") elif y_pred_inf == True: st.write("Customer Terklasifikasi Churn") if __name__ == '__main__': run()