import streamlit as st import pandas as pd import numpy as np import pickle from PIL import Image def run(): # membuat title st.title('Heart Disease Prediction') # membuat subheader st.subheader('Data Form Input Heart Disease Classification') # menambahkan gambar image = Image.open('heart_disease_1.jpeg') st.image(image, caption = 'Heart Disease') with st.form('Form Heart Disease Prediction'): # field age age = st.number_input('Age', min_value=18, max_value=90, help='Usia') # field gender gender = st.number_input('Gender', min_value=0, max_value=1, help='Jenis kelamin(1:Laki-laki, 2:Perempuan)') # field impluse impluse = st.number_input('Impluse', min_value=50 , max_value=200, help='Detak jantung') # field pressurehight pressurehight = st.number_input('pressurehight', min_value=60 , max_value=250, help='Sistolik (Tekanan darah saat jantung berkontraksi/berdetak)') # field pressurelow pressurelow = st.number_input('pressurelow', min_value=60, max_value=250, help='Diastolik (tekanan darah saat jantung beristirahat/diantara detak)') # field glucose glucose = st.number_input('glucose', min_value=50, max_value=370, help='Kadar gula darah') # field kcm kcm = st.number_input('kcm', min_value=24, max_value=500, help='Test CK-MB (test pendeteksi enzim kreatin kinase)') # field troponin troponin = st.number_input('troponin', min_value=1, max_value=500, help='Test troponin (test kadar troponin/protein yang dilepaskan jika terjadi kerusakan jantung)') # submit button submitted = st.form_submit_button('Predict') # inference # load all files with open('scaler.pkl', 'rb') as file_1: scaler = pickle.load(file_1) with open('model.pkl', 'rb') as file_2: model = pickle.load(file_2) data_inf = { 'age' : age, 'gender' : gender, 'impluse' : impluse, 'pressurehight' : pressurehight, 'pressurelow' : pressurelow, 'glucose' : glucose, 'kcm' : kcm, 'troponin' : troponin } # memasukkan data inference ke dataframe data_inf = pd.DataFrame([data_inf]) st.dataframe(data_inf) # logic ketika predict button ditekan if submitted: data_inf_drop = data_inf.drop(['gender', 'impluse', 'pressurehight', 'pressurelow', 'glucose'], axis=1) data_inf_scaled = scaler.transform(data_inf_drop) # predict y_pred_inf = model.predict(data_inf_scaled) st.write('## Heart Disease :', str(int(y_pred_inf))) st.write('### Positive : 1, Negative : 2') if __name__ == '__main__': run()