Spaces:
Runtime error
Runtime error
| import streamlit as st | |
| import pandas as pd | |
| import numpy as np | |
| import pickle | |
| import json | |
| from PIL import Image | |
| # load all files | |
| with open('ab_model.pkl', 'rb') as file_1: | |
| ab_model = pickle.load(file_1) | |
| # Pre-processing | |
| with open('scale_feat.pkl', 'rb') as file_2: | |
| scale_feat = pickle.load(file_2) | |
| with open('winsoriser.pkl', 'rb') as file_3: | |
| winsoriser = pickle.load(file_3) | |
| # List Numeric & Category | |
| with open('num_cols_sc.txt', 'r') as file_4: | |
| num_cols_sc = json.load(file_4) | |
| with open('num_cols_nsc.txt', 'r') as file_5: | |
| num_cols_nsc = json.load(file_5) | |
| def run(): | |
| with st.form(key='from_diabetes'): | |
| st.title('Prediction Page') | |
| # sub header | |
| st.subheader('We calculate your metrics to calculate diabetes') | |
| # add pic | |
| image = Image.open('diabetes2.png') | |
| st.image(image) | |
| st.write('Columns below are parameter we would like to use to predict if a patient have a diabetes or not.') | |
| st.write('*`Please fill columns below to predict`*') | |
| gender = st.selectbox('Gender', [0,1], help='0 = Female, 1 = Male') | |
| age = st.number_input('Age', min_value=25, max_value=80, | |
| value=45, step=1, help='Usia Pasien') | |
| hypertension = st.number_input('Hypertension', min_value=0, max_value=1 , value=0, | |
| step=1, help='have hypertension?') | |
| heart_disease = st.number_input('Heart Disease', min_value=0, max_value=1 , value=0, | |
| step=1, help='have heart disease?') | |
| bmi = st.number_input('Body Mass Index', min_value=5, max_value=80, | |
| value=30, step=5, help='Amount of BMI') | |
| HbA1c_level = st.number_input('Hemogloblin Level', min_value= 3, max_value= 10, | |
| value= 6, help='Level of Hemogloblin 3-10') | |
| blood_glucose_level = st.slider('Glucose Level', 0, 400, 150, step=10, | |
| help='Glucose amount in blood stream') | |
| st.markdown('---') | |
| submitted = st.form_submit_button('Predict') | |
| data_inf = { | |
| 'age': age, | |
| 'bmi': bmi, | |
| 'hemoglobin_level': HbA1c_level, | |
| 'blood_glucose_level': blood_glucose_level, | |
| 'gender': gender, | |
| 'hypertension': hypertension, | |
| 'heart_disease': heart_disease, | |
| } | |
| data_inf = pd.DataFrame([data_inf]) | |
| st.dataframe(data_inf) | |
| if submitted: | |
| data_inf_sc = data_inf[num_cols_sc] | |
| data_inf_nsc = data_inf[num_cols_nsc] | |
| # scalling | |
| data_inf_sc = scale_feat.transform(data_inf_sc) | |
| data_inf_sc = pd.DataFrame(data_inf_sc, columns=num_cols_sc) | |
| # Reset Index | |
| data_inf_sc.reset_index(drop= True, inplace= True) | |
| data_inf_nsc.reset_index(drop = True, inplace = True) | |
| data_final = pd.concat([data_inf_sc, data_inf_nsc], axis= 1) | |
| # modeling | |
| y_pred_inf = ab_model.predict(data_final) | |
| if y_pred_inf[0] == 1: | |
| st.write('# **`Prediction: You Have Diabetes`**') | |
| else: | |
| st.write('# **`Prediction: You do not Have Diabetes`**') | |
| if __name__ == '__main__': | |
| run() |