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('list_num_cols.txt', 'r') as file_1: | |
list_num_cols = json.load(file_1) | |
with open('model_scaler.pkl', 'rb') as file_2: | |
scaler = pickle.load(file_2) | |
with open('model_rfc.pkl', 'rb') as file_3: | |
model_rfc = pickle.load(file_3) | |
with open('model_gbc.pkl', 'rb') as file_4: | |
model_gbc = pickle.load(file_4) | |
def run(): | |
st.write('##### Form Prediction of Death Due To Heart Failure') | |
# Making Form | |
with st.form(key='Form Form Prediction of Death Due To Heart Failure'): | |
age = st.number_input('age', min_value=30, max_value=90, value=30) | |
anaemia = st.selectbox('anaemia', (0,1), index=0, help='0=No, 1=Yes | Decrease of red blood cells or hemogrobin.') | |
creatinine_phosphokinase = st.number_input('creatinine_phosphokinase', min_value=50, max_value=6000, value=50, step=1, help='Level of the CPK enzyme in the blood (mcg/L).') | |
diabetes = st.selectbox('diabetes', (0,1), index=0, help='0=No, 1=Yes | If the patient has diabetes.') | |
ejection_fraction = st.number_input('ejection_fraction', min_value=1, max_value=100, value=1, help='Percentage of blood leaving the heart at each contraction (percentage).') | |
high_blood_pressure = st.selectbox('high_blood_pressure', (0,1), index=0, help='0=No, 1=Yes | If the patient has hypertention.') | |
platelets = st.number_input('platelets', min_value=40000, max_value=500000, value=40000, help='Platelets in the blood (kiloplatelets/mL).') | |
serum_creatinine = st.number_input('serum_creatinine', min_value=0, max_value=10, value=0, help='Level of serum creatinine in the blood (mg/dL).') | |
serum_sodium = st.number_input('serum_sodium', min_value=100, max_value=150, value=100, help='Level of serum sodium in the blood (mEq/L).') | |
sex = st.selectbox('sex', (0,1), index=0, help='0=Woman, 1=Man') | |
smoking = st.selectbox('smoking', (0,1), index=0, help='0=No, 1=Yes | If the patient smokes or not.') | |
time = st.number_input('time', min_value=1, max_value=300, value=1, help='Follow-up period (days).') | |
st.markdown('---') | |
submited_1 = st.form_submit_button('Predict using RFC') | |
submited_2 = st.form_submit_button('Predict using GBC') | |
data_inf = { | |
'age' : age, | |
'anaemia' : 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, | |
} | |
data_inf = pd.DataFrame([data_inf]) | |
st.dataframe(data_inf) | |
if submited_1: | |
# Split between numerical columns and categorical columns | |
data_inf_num = data_inf[list_num_cols] | |
data_inf_num | |
#Feature scaling and feature encoding | |
data_inf_num_scaled = scaler.transform(data_inf_num) | |
data_inf_final = data_inf_num_scaled | |
#Predict using Random Forest Classification | |
y_pred_inf = model_rfc.predict(data_inf_final) | |
st.write('# Result Prediction using RFC : ', str(int(y_pred_inf))) | |
else: | |
# Split between numerical columns and categorical columns | |
data_inf_num = data_inf[list_num_cols] | |
data_inf_num | |
#Feature scaling and feature encoding | |
data_inf_num_scaled = scaler.transform(data_inf_num) | |
data_inf_final = data_inf_num_scaled | |
#Predict using RFC | |
y_pred_inf = model_gbc.predict(data_inf_final) | |
st.write('# Result Prediction using GBC : ', str(int(y_pred_inf))) | |
if __name__ == '__main__': | |
run() |