ranimeree commited on
Commit
c3cfea7
·
verified ·
1 Parent(s): d3164b9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +44 -61
app.py CHANGED
@@ -1,32 +1,27 @@
1
  import gradio as gr
 
2
  import pandas as pd
 
3
  import numpy as np
4
- import joblib
5
 
6
- def predict(gender, age, hypertension, ever_married, work_type,
7
- heart_disease, avg_glucose_level, bmi, smoking_status, Residence_type):
 
 
8
 
 
9
 
 
 
10
  gender_mapping = {'Male': 1, 'Female': 0}
11
  hypertension_mapping = {'Yes': 1, 'No': 0}
12
  ever_married_mapping = {'Yes': 1, 'No': 0}
13
- work_type_mapping = {
14
- 'Private': 2,
15
- 'Self-employed': 4,
16
- 'Govt_job': 3,
17
- 'children': 1,
18
- 'Never_worked': 0
19
- }
20
  heart_disease_mapping = {'Yes': 1, 'No': 0}
21
- smoking_status_mapping = {
22
- 'formerly smoked': 3,
23
- 'smokes': 1,
24
- 'never smoked': 2,
25
- 'Unknown': 0
26
- }
27
  Residence_type_mapping = {'Urban': 1, 'Rural': 0}
28
 
29
-
30
  gender = gender_mapping[gender]
31
  hypertension = hypertension_mapping[hypertension]
32
  ever_married = ever_married_mapping[ever_married]
@@ -35,55 +30,43 @@ def predict(gender, age, hypertension, ever_married, work_type,
35
  smoking_status = smoking_status_mapping[smoking_status]
36
  Residence_type = Residence_type_mapping[Residence_type]
37
 
38
- input_data = {
39
- 'gender': [gender],
40
- 'age': [age],
41
- 'hypertension': [hypertension],
42
- 'ever_married': [ever_married],
43
- 'work_type': [work_type],
44
- 'heart_disease': [heart_disease],
45
- 'avg_glucose_level': [avg_glucose_level],
46
- 'bmi': [bmi],
47
- 'smoking_status': [smoking_status],
48
- 'Residence_type': [Residence_type]
49
- }
50
-
51
- input_df = pd.DataFrame(input_data)
52
-
53
- try:
54
- model = joblib.load('model.pkl')
55
-
56
- prediction = model.predict_proba(input_df)[0][1]
57
-
58
- result = f"The probability to have a stroke: {prediction:.2%}"
59
- return result
60
- except Exception as e:
61
- return f"Error making prediction: {str(e)}"
62
-
63
- interface = gr.Interface(
64
  fn=predict,
65
  inputs=[
66
- gr.Radio(choices=['Female', 'Male'], label="Gender"),
67
- gr.Slider(minimum=0, maximum=100, label="Age"),
68
- gr.Radio(choices=['Yes', 'No'], label="Hypertension"),
69
- gr.Radio(choices=['Yes', 'No'], label="Ever Married"),
70
- gr.Radio(
71
- choices=['Private', 'Self-employed', 'Govt_job', 'children', 'Never_worked'],
72
- label="Work Type"
73
- ),
74
- gr.Radio(choices=['Yes', 'No'], label="Heart Disease"),
75
- gr.Number(label="Average Glucose Level"),
76
- gr.Slider(minimum=10, maximum=50, label="BMI"),
77
- gr.Radio(
78
- choices=['formerly smoked', 'never smoked', 'smokes', 'Unknown'],
79
- label="Smoking Status"
80
- ),
81
- gr.Radio(choices=['Urban', 'Rural'], label="Residence Type")
82
  ],
83
  outputs='text',
84
  title='Stroke Probability Predictor',
85
  description='Predicts the probability of having a stroke based on input features.'
86
  )
87
 
88
- if __name__ == "__main__":
89
- interface.launch()
 
1
  import gradio as gr
2
+ import dill
3
  import pandas as pd
4
+ import xgboost as xgb
5
  import numpy as np
6
+ import pickle
7
 
8
+ def decode_file(file_path):
9
+ with open(file_path, 'rb') as file:
10
+ obj = pickle.load(file)
11
+ return obj
12
 
13
+ model = decode_file('model.pkl')
14
 
15
+
16
+ def predict(gender, age, hypertension, ever_married, work_type, heart_disease, avg_glucose_level, bmi, smoking_status, Residence_type):
17
  gender_mapping = {'Male': 1, 'Female': 0}
18
  hypertension_mapping = {'Yes': 1, 'No': 0}
19
  ever_married_mapping = {'Yes': 1, 'No': 0}
20
+ work_type_mapping = {'Private': 2, 'Self-employed': 4, 'Govt_job': 3, 'children': 1, 'Never_worked': 0}
 
 
 
 
 
 
21
  heart_disease_mapping = {'Yes': 1, 'No': 0}
22
+ smoking_status_mapping = {'formerly smoked': 3, 'smokes': 1, 'never smoked': 2, 'Unknown': 0}
 
 
 
 
 
23
  Residence_type_mapping = {'Urban': 1, 'Rural': 0}
24
 
 
25
  gender = gender_mapping[gender]
26
  hypertension = hypertension_mapping[hypertension]
27
  ever_married = ever_married_mapping[ever_married]
 
30
  smoking_status = smoking_status_mapping[smoking_status]
31
  Residence_type = Residence_type_mapping[Residence_type]
32
 
33
+ inputs = [gender, age, hypertension, ever_married, work_type, heart_disease, avg_glucose_level, bmi, smoking_status, Residence_type]
34
+ input_labels = ['gender', 'age', 'hypertension', 'ever_married', 'work_type', 'heart_disease', 'avg_glucose_level', 'bmi', 'smoking_status', 'Residence_type']
35
+
36
+ input_df = pd.DataFrame([inputs], columns=input_labels)
37
+
38
+ prediction = model.predict_proba(input_df)[0][1]
39
+
40
+ result = "The probability of stroke is {:.2f}%".format(prediction * 100) # to give a percentage
41
+ return result
42
+
43
+
44
+
45
+
46
+
47
+
48
+ input_labels = [
49
+ 'gender', 'age', 'hypertension', 'ever_married', 'work_type',
50
+ 'heart_disease', 'avg_glucose_level', 'bmi', 'smoking_status', 'Residence_type'
51
+ ]
52
+ iface = gr.Interface(
 
 
 
 
 
 
53
  fn=predict,
54
  inputs=[
55
+ gr.components.Radio(choices=['Female', 'Male'], label="Gender"),
56
+ gr.components.Slider(label="Age"),
57
+ gr.components.Radio(choices=['Yes', 'No'], label="Hypertension"),
58
+ gr.components.Radio(choices=['Yes', 'No'], label="Ever Married"),
59
+ gr.components.Radio(choices=['Private', 'Self-employed', 'Govt_job', 'children', 'Never_worked'], label="Work Type"),
60
+ gr.components.Radio(choices=['Yes', 'No'], label="Heart Disease"),
61
+ gr.components.Number(label="Average Glucose Level"),
62
+ gr.components.Slider(label="BMI"),
63
+ gr.components.Radio(choices=['formerly smoked', 'never smoked', 'smokes', 'Unknown'], label="Smoking Status"),
64
+ gr.components.Radio(choices=['Urban', 'Rural'], label="Residence Type")
 
 
 
 
 
 
65
  ],
66
  outputs='text',
67
  title='Stroke Probability Predictor',
68
  description='Predicts the probability of having a stroke based on input features.'
69
  )
70
 
71
+
72
+ iface.launch()