|
|
import streamlit as st |
|
|
import joblib |
|
|
import numpy as np |
|
|
|
|
|
html_temp = """ |
|
|
<div style="background-color:black;padding:10px"> |
|
|
<h2 style="color:red;text-align:center;">Cardiovascular Health Prediction App </h2> |
|
|
</div> |
|
|
""" |
|
|
st.markdown(html_temp, unsafe_allow_html=True) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
url="https://static.vecteezy.com/system/resources/previews/006/712/964/original/abstract-health-medical-science-healthcare-icon-digital-technology-doctor-concept-modern-innovation-treatment-medicine-on-hi-tech-future-blue-background-for-wallpaper-template-web-design-vector.jpg" |
|
|
st.image(url, use_container_width=True) |
|
|
|
|
|
st.markdown(f""" |
|
|
<style> |
|
|
/* Set the background image for the entire app */ |
|
|
.stApp {{ |
|
|
background-color:#fdf5df; |
|
|
background-size: 100px; |
|
|
background-repeat:no; |
|
|
background-attachment: auto; |
|
|
background-position:full; |
|
|
}} |
|
|
</style> |
|
|
""", unsafe_allow_html=True) |
|
|
|
|
|
st.write("Enter the Patient details:") |
|
|
|
|
|
|
|
|
|
|
|
health_model=joblib.load("health_model.joblib") |
|
|
|
|
|
scaler_model=joblib.load('scaler_the data_model.joblib') |
|
|
|
|
|
|
|
|
|
|
|
col1, col2 = st.columns(2) |
|
|
with col1: |
|
|
|
|
|
|
|
|
age=st.slider("Slide the AGE of the Patient:",max_value=80,min_value=20) |
|
|
|
|
|
with col2: |
|
|
|
|
|
|
|
|
option_gen=["Female "," Male"] |
|
|
gen=st.selectbox("Select the Gender",option_gen) |
|
|
gender_value=option_gen.index(gen) |
|
|
|
|
|
col1, col2 = st.columns(2) |
|
|
with col1: |
|
|
|
|
|
chestpain=st.slider("Slide the chestpain Value:",min_value=0,max_value=3) |
|
|
|
|
|
with col2: |
|
|
|
|
|
restingBP=st.slider("Slide the Resting BP of the Patient:",min_value=90,max_value=200) |
|
|
|
|
|
col1,col2=st.columns(2) |
|
|
with col1: |
|
|
|
|
|
serumcholestrol=st.slider("Slide The Serum cholestrol Of a Ptient :",min_value=0,max_value=600) |
|
|
|
|
|
with col2: |
|
|
|
|
|
fastingbloodsugar= st.radio("Is Patient blood is Fasting:", ["YES", "NO"]) |
|
|
if fastingbloodsugar=="YES": |
|
|
fastingbloodsugar_value=1 |
|
|
else: |
|
|
fastingbloodsugar_value=0 |
|
|
|
|
|
col1,col2=st.columns(2) |
|
|
|
|
|
with col1: |
|
|
|
|
|
restingrelectro=st.slider("Slide The restingrelectro of a Patient :",min_value=0,max_value=2) |
|
|
|
|
|
with col2: |
|
|
|
|
|
maxheartrate=st.slider("Slide The max heart rate of the Patient :",min_value=70,max_value=200) |
|
|
|
|
|
col1,col2=st.columns(2) |
|
|
with col1: |
|
|
|
|
|
exerciseangia=st.slider("Slide the exerciseangia Value:",min_value=0,max_value=1) |
|
|
|
|
|
|
|
|
with col2: |
|
|
|
|
|
oldpeak=st.slider("Silde the oldpeak :",max_value=6.2,min_value=0.0,value=0.1) |
|
|
|
|
|
|
|
|
col1,col2=st.columns(2) |
|
|
with col1: |
|
|
|
|
|
slope=st.slider("Silde the slope of the Patient :",max_value=3,min_value=0,value=1) |
|
|
|
|
|
with col2: |
|
|
|
|
|
noofmajorvessels=st.slider("Silde the No of Major Vessels to a Patient :",max_value=3,min_value=0,value=1) |
|
|
|
|
|
if st.button("Submit"): |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
scaler_val = scaler_model.transform([[age,gender_value,chestpain,restingBP,serumcholestrol,fastingbloodsugar_value,restingrelectro, |
|
|
maxheartrate,exerciseangia,oldpeak,slope,noofmajorvessels]]) |
|
|
|
|
|
|
|
|
|
|
|
try: |
|
|
|
|
|
prediction=health_model.predict(scaler_val)[0] |
|
|
|
|
|
|
|
|
review_status = { |
|
|
0: ("β
The patient is Healthy", "#32CD32"), |
|
|
1: ("β The Patient has Heart Disease ", "#FF4500") |
|
|
} |
|
|
|
|
|
|
|
|
message, color = review_status.get(prediction, ("β Unknown Prediction", "#808080")) |
|
|
|
|
|
|
|
|
st.markdown(f""" |
|
|
<div style=" |
|
|
padding: 15px; |
|
|
background-color: {color}; |
|
|
border-radius: 10px; |
|
|
text-align: center; |
|
|
font-size: 18px; |
|
|
font-weight: bold; |
|
|
color: white;"> |
|
|
{message} |
|
|
</div> |
|
|
""", unsafe_allow_html=True) |
|
|
|
|
|
except Exception as e: |
|
|
st.error(f"β οΈ Error in prediction: {e}") |
|
|
|