Spaces:
Runtime error
Runtime error
import streamlit as st | |
import pandas as pd | |
import numpy as np | |
import pickle | |
import json | |
# load all files | |
with open('cat_model.pkl', 'rb') as file_1: | |
cat_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_health'): | |
age = st.number_input('Usia', min_value=25, max_value=95, | |
value=40, step=1, help='Usia Pasien') | |
anaemia = st.number_input('Anemia', min_value=0, max_value=1, | |
value=0, step=1, help='Terindikasi Anemia 0 = Tidak, 1 = Ya') | |
creatinine_phosphokinase = st.slider('Creatine Value', 0, 10_000, 1500, step=20, help='Kadar Creatinine') | |
diabetes = st.number_input('Diabetes', min_value=0, max_value=1, | |
value=0, step=1, help='Terindikasi Diabetes 0 = Tidak, 1 = Ya') | |
ejection_fraction = st.number_input('Ejection Value', min_value=0, max_value=100, | |
value=50, step=1, help='Kadar Ejection') | |
high_blood_pressure = st.number_input('Tekanan Darah Tinggi', min_value=0, max_value=1, | |
value=0, step=1, help='Terindikasi Tekanan Darah Tinggi 0 = Tidak, 1 = Ya') | |
platelets = st.slider('Platelets', 0, 850_000, 50_000, step=100, help='Kadar Platelets') | |
serum_creatinine = st.number_input('Serum Creatinine', min_value=0, max_value=10, | |
value=5, step=1, help='Kadar Serum_Creatinine') | |
serum_sodium = st.number_input('Serum Sodium', min_value=0, max_value=150, | |
value=50, step=1, help='Kadar Serum_Sodium') | |
sex = st.number_input('Jenis Kelamin', min_value=0, max_value=1, | |
value=0, step=1, help='Kode jenis kelamin 0 = wanita , 1 = pria') | |
smoking = st.number_input('Merokok', min_value=0, max_value=1, | |
value=0, step=1, help='Terindikasi Merokok 0 = Tidak, 1 = Ya') | |
time = st.number_input('Waktu', min_value=0, max_value=300, | |
value=10, step=1, help='Waktu berkunjung kembali') | |
st.markdown('---') | |
submitted = st.form_submit_button('Predict') | |
data_inf = { | |
'age': age, | |
'anemia': anaemia, | |
'creatinine_phosphokinase': creatinine_phosphokinase, | |
'diabetes': diabetes, | |
'ejection_fraction': ejection_fraction, | |
'high_blood_pressure': high_blood_pressure, | |
'platelets': platelets, | |
'serum_creatinine': serum_creatinine, | |
'serum_sodium': serum_sodium, | |
'sex': sex, | |
'smoking': smoking, | |
'time': time, | |
} | |
st.markdown('Jika Hasil Prediksi = 1, maka model memprediksi bahwa pasien akan meninggal.') | |
st.markdown('Jika Hasil Prediksi = 0, maka model memprediksi bahwa pasien akan selamat.') | |
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_nsc, data_inf_sc], axis= 1) | |
# modeling | |
y_pred_inf = cat_model.predict(data_final) | |
st.write('Prediction: ', (y_pred_inf)) | |
if __name__ == '__main__': | |
run() |