|
import streamlit as st |
|
import numpy as np |
|
import joblib as jl |
|
import xgboost as xgb |
|
import pickle |
|
|
|
|
|
with open('xgb_classifier_model_heart.pkl', 'rb') as model_file: |
|
loaded_xgb_model = pickle.load(model_file) |
|
|
|
|
|
st.title("Heart Attack Risk Prediction") |
|
st.markdown("Enter the following information to predict your risk of a Heart Attack.") |
|
|
|
|
|
sex = st.selectbox("Sex", ["Male", "Female"]) |
|
chest_pain = st.selectbox("Chest Pain", ["Typical Angina", "Atypical Angina", "Non-Anginal pain", "Asymptomatic"]) |
|
Max_heartrate_achieved = st.number_input("Maximum Heartrate Achieved ") |
|
Exercice_angina = st.selectbox("Exercise Induced Angina", ["Yes", "No"]) |
|
oldpeak = st.number_input("oldpeak") |
|
slop = st.selectbox("Slope of the peak exercise ST segment", ["Unsloping", "flat", "Downsloping"]) |
|
nb_vessels = st.selectbox("Number of major vessels", ["0", "1", "2", "3"]) |
|
thal = st.selectbox("Thalassemia", ["Null", "Fixed defect", "Normal", "Reversible defect"]) |
|
|
|
|
|
if st.button("Predict"): |
|
|
|
sex = 1 if sex == "Male" else 0 |
|
chest_pain = 0 if chest_pain == "Typical Angina" else 1 if chest_pain == "Atypical Angina" else 2 if chest_pain == "Non-Anginal pain" else 3 |
|
Exercice_angina = 1 if Exercice_angina == "Yes" else 0 |
|
slop = 0 if slop == "Unsloping" else 1 if slop == "flat" else 2 if slop == "Downsloping" else 0 |
|
nb_vessels = 0 if nb_vessels == "0" else 1 if nb_vessels == "1" else 2 if nb_vessels == "2" else 3 |
|
thal = 0 if thal == "Null" else 1 if thal == "Fixed defect" else 2 if thal == "Normal" else 3 if thal == "Reversible defect" else 0 |
|
|
|
input_data = np.array([[sex, chest_pain, Max_heartrate_achieved, Exercice_angina,oldpeak, slop, nb_vessels, thal]]) |
|
|
|
|
|
prediction = loaded_xgb_model.predict(input_data) |
|
|
|
|
|
if prediction == 0: |
|
st.markdown("### Result: **Low Risk** of a Heart Attack") |
|
else: |
|
st.markdown("### Result: **High Risk** of a Heart Attack") |
|
|
|
|