import streamlit as st import pandas as pd import numpy as np import pickle from tensorflow.keras.models import load_model # Load the Models with open('final_pipeline.pkl', 'rb') as file_1: model_pipeline = pickle.load(file_1) model_ann = load_model('model.h5') def run(): st.title('Wine Quality Prediction') with st.form(key='form_heart_failure'): user = st.text_input('User ID', max_chars=20) age = st.number_input('Age', min_value=1, max_value=100, value=25,step=1) gender = st.selectbox('Are you a male or female?', ('Male','Female')) region = st.selectbox('In which region do you live?', ('City','Town', 'Village')) member = st.selectbox('Your level of membership?', ('No Membership', 'Basic Membership', 'Silver Membership', 'Gold Membership', 'Premium Membership', 'Platinum Membership')) date = st.text_input('Join date', max_chars=10, help='Please enter with yyyy-mm-dd format') referral = st.selectbox('Did you join using referral codes?', ('Yes','No')) offer = st.selectbox('What is your preferred offer types?', ('Gift Vouchers/Coupons', 'Credit/Debit Card Offers', 'Without Offers')) medium = st.selectbox('Which device are you using?', ('Desktop', 'Smartphone', 'Both')) option = st.selectbox('Which product are you using?', ('Wi-Fi', 'Fiber_Optic', 'Mobile_Data')) time = st.text_input('Time during last visit to website', max_chars=8, help='Please enter with hh:mm:ss format') days = st.number_input('Days since last login', min_value=0, max_value=365, value=10, step=1) tspent = st.number_input('Average Time spent on website', min_value=0., max_value=600., value=30., step=.1) value = st.number_input('Average Transaction Value', min_value=500., max_value=100000., value=15000., step=.1) freq = st.number_input('Login Days Frequency', min_value=0, max_value=90, value=10, step=1) point = st.number_input('Pints received', min_value=0., max_value=2500., value=600., step=.1) discount = st.selectbox('Did you receive special discount?', ('Yes', 'No')) preference = st.selectbox('Do you prefer to receive offers?', ('Yes', 'No')) past = st.selectbox('Have you ever submitted a complaint?', ('Yes', 'No')) status = st.selectbox('What is the outcome of the comlaints?', ('No Information Available', 'Not Applicable', 'Unsolved', 'Solved', 'Solved in Follow-up'), help='Choose Not Applicable if you have never submitted a complaint') feedback = st.selectbox('Your feedback for us?', ('Poor Website', 'Poor Customer Service', 'Too many ads', 'Poor Product Quality', 'No reason specified', 'Products always in Stock', 'Reasonable Price', 'Quality Customer Care', 'User Friendly Website')) submitted = st.form_submit_button('Predict') data_inf = { 'user_id': user, 'age': age, 'gender': gender, 'region_category': region, 'membership_category': member, 'joining_date': date, 'joined_through_referral': referral, 'preferred_offer_types': offer, 'medium_of_operation': medium, 'internet_option': option, 'last_visit_time': time, 'days_since_last_login' : days, 'avg_time_spent' : tspent, 'avg_transaction_value' : value, 'avg_frequency_login_days' : freq, 'points_in_wallet' : point, 'used_special_discount' : discount, 'offer_application_preference' : preference, 'past_complaint' : past, 'complaint_status' : status, 'feedback' : feedback } data_inf = pd.DataFrame([data_inf]) st.dataframe(data_inf) data_inf['gender'] = data_inf['gender'].replace({'Male': 'M', 'Female': 'F'}) if submitted: # Transform Inference-Set data_inf_transform = model_pipeline.transform(data_inf) # Predict using Neural Network y_pred_inf = model_ann.predict(data_inf_transform) y_pred_inf = np.where(y_pred_inf >= 0.5, 1, 0) y_pred_inf = np.where(y_pred_inf == 0, 'No Churn', 'Churn') st.write('Hasil prediksi Model : ', y_pred_inf) if __name__ == '__main__': run()