heart_disease_prediction / prediction.py
hammammahdy's picture
third commit
63c1eb8
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()