-
Notifications
You must be signed in to change notification settings - Fork 0
/
Heart_Disease_Prediction_WebApp.py
130 lines (106 loc) · 4.64 KB
/
Heart_Disease_Prediction_WebApp.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
import numpy as np
import pickle
import streamlit as st
loaded_model = pickle.load(open("heart_disease_trained_model.sav",'rb'))
def heart_disease_prediction(input_data):
#changing the input data to numpy
input_data_as_numpy_array = np.asarray(input_data,dtype=np.float64)
#reshape the array as we are predicting on 1 instance
input_data_reshaped = input_data_as_numpy_array.reshape(1,-1)
prediction = loaded_model.predict(input_data_reshaped)
if(prediction[0]==0):
return 'The person does not have a Heart Disease'
else:
return 'The person have a Heart Disease'
def main():
#giving a title
st.title('Heart Disease Prediction Web App')
#getting input data from user
col1 , col2 , col3 = st.columns(3)
with col1:
age = st.text_input("Age in years")
with col2:
#sex = st.text_input("Sex (1 = male; 0 = female)")
option1 = st.selectbox('Gender',('Male', 'Female'))
sex = 0 if option1 == 'Female' else 1
with col3:
#chest_pain = st.text_input("Chest Pain type")
option2 = st.selectbox('Chest Pain type',('0','1','2','3'))
if option2 == '0':
chest_pain = 0
elif option2 == '1':
chest_pain = 1
elif option2 == '2':
chest_pain = 2
else:
chest_pain = 3
with col1:
resting_bp = st.text_input("Resting Blood Pressure (in mm Hg)")
with col2:
serum_cholestoral = st.text_input("Serum Cholestoral in mg/dl")
with col3:
#fasting_blood_sugar = st.text_input("Fasting Blood Sugar > 120 mg/dl")
option3 = st.selectbox('Fasting Blood Sugar',('True', 'False'))
fasting_blood_sugar = 0 if option3 == 'False' else 1
with col1:
#resting_ecg = st.text_input("Resting ECG Results (values 0,1,2)")
option4 = st.selectbox('Resting ECG Results',('0','1','2','3'))
if option4 == '0':
resting_ecg = 0
elif option4 == '1':
resting_ecg = 1
elif option4 == '2':
resting_ecg = 2
with col2:
max_heart_achieved = st.text_input("Maximum Heart Rate Achieved")
with col3:
#exercise_induced_angina = st.text_input("Exercise Induced Angina")
option5 = st.selectbox('Exercise Induced Angina',('Yes', 'No'))
exercise_induced_angina = 0 if option5 == 'No' else 1
with col1:
oldpeak = st.text_input("Oldpeak (ST depression induced by exercise relative to rest)")
with col2:
#slope_of_peak_exercise = st.text_input("The slope of the peak exercise ST segment")
option6 = st.selectbox('The slope of the peak exercise ST segment',('0','1','2'))
if option6 == '0':
slope_of_peak_exercise = 0
elif option6 == '1':
slope_of_peak_exercise = 1
elif option6 == '2':
slope_of_peak_exercise = 2
with col3:
#number_of_major_vessels = st.text_input("Number of major vessels (0-4) colored by flourosopy")
option7 = st.selectbox('The slope of the peak exercise ST segment',('0','1','2','3','4'))
if option7 == '0':
number_of_major_vessels = 0
elif option7 == '1':
number_of_major_vessels = 1
elif option7 == '2':
number_of_major_vessels = 2
elif option7 == '3':
number_of_major_vessels = 3
else:
number_of_major_vessels = 4
with col1:
#thal = st.text_input("Thal: 0 = normal; 1 = fixed defect; 2 = reversable defect")
option7 = st.selectbox('Thal',('None','Normal','Fixed defect','Reversable defect'))
if option7 == 'None':
thal = 0
elif option7 == 'Normal':
thal = 1
elif option7 == 'Fixed defect':
thal = 2
elif option7 == 'Reversable defect':
thal = 3
# code for prediction
heart_disease_diagnosis = ''
#creating a button for Prediction
if st.button('Heart Disease Test Result'):
heart_disease_diagnosis=heart_disease_prediction([[age,sex,chest_pain,
resting_bp,serum_cholestoral,fasting_blood_sugar,
resting_ecg,max_heart_achieved,exercise_induced_angina,
oldpeak,slope_of_peak_exercise,
number_of_major_vessels,thal]])
st.success(heart_disease_diagnosis)
if __name__ == '__main__':
main()