lucasgbezerra commited on
Commit
d1d6ffa
1 Parent(s): f675d52

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -27
app.py CHANGED
@@ -3,38 +3,31 @@ from fastai.tabular.all import *
3
  import pandas as pd
4
  import torch
5
 
6
- model = load_learner('learn_model.pkl')
 
7
 
8
- def convert(vocab, data):
9
- tensor = torch.zeros(len(vocab), len(data))
10
- for i, char in enumerate(vocab):
11
- tensor[i][ord(char) - ord('a')] = i
 
 
 
 
 
 
12
 
13
- return tensor
14
-
15
  def predict(age, hypertension, heart_disease, avg_glucose_level, bmi, gender, married, work_type, residence_type, smoking_status):
16
-
 
17
  columns_df = ['gender', 'age', 'hypertension', 'heart_disease', 'ever_married', 'work_type', 'Residence_type', 'avg_glucose_level', 'bmi','smoking_status']
18
- tensor = []
19
-
20
- data = [gender, age, hypertension, heart_disease, married, work_type, residence_type, avg_glucose_level, bmi, smoking_status]
21
 
 
 
22
 
23
- # df = pd.Dataframe(data, columns=columns_df)
24
- age_tensor = torch.tensor(age, dtype=torch.int64)
25
- hypertension_tensor = convert(hypertension, data)
26
- heart_disease_tensor = convert(heart_disease, data)
27
- avg_glucose_level_tensor = torch.tensor(avg_glucose_level, dtype=torch.float)
28
- bmi_tensor = torch.tensor(bmi, dtype=torch.float)
29
- gender_tensor = convert(hypertension, data)
30
- married_tensor = convert(married, data)
31
- work_type_tensor = convert(work_type, data)
32
- residence_type_tensor = convert(residence_type, data)
33
- smoking_status_tensor = convert(smoking_status, data)
34
-
35
- tensor = torch.cat([gender_tensor, married_tensor, work_type_tensor, residence_type_tensor, smoking_status_tensor, bmi_tensor, age_tensor, hypertension_tensor, heart_disease_tensor, avg_glucose_level_tensor])
36
- prediction = model.predict(tensor)
37
- return "O paciente tem a seguinte possibilidade de infarto: " + str(predictions[0])
38
 
39
  gr.Interface(
40
  fn=predict,
@@ -46,7 +39,7 @@ gr.Interface(
46
  gr.Dropdown(["Yes", "No"], label="Hypertension"),
47
  gr.Dropdown(["Yes", "No"], label="Heart disease"),
48
  gr.inputs.Number(default=100, label="Average glucose level"),
49
- gr.inputs.Number(default=28.8, label="Body mass index (BMI)"),
50
  gr.inputs.Radio(choices=["Female", "Male", "Other"], default="Female", label="Gender"),
51
  gr.Dropdown(["No", "Yes"], label="Married"),
52
  gr.Dropdown(["Governamental", "Never worked", "Private", "Self-employed", "Children"], label="Work type"),
 
3
  import pandas as pd
4
  import torch
5
 
6
+ df_framework = pd.read_csv('/kaggle/input/stroke-prediction-dataset/healthcare-dataset-stroke-data.csv')
7
+ splits = RandomSplitter(seed=42)(df_framework)
8
 
9
+ dls = TabularPandas(
10
+ df_framework, splits=splits,
11
+ procs = [Categorify, FillMissing, Normalize],
12
+ cat_names=["gender","ever_married","work_type","Residence_type", "smoking_status"],
13
+ cont_names=['age', 'hypertension', 'heart_disease', 'avg_glucose_level', 'bmi'],
14
+ y_names="stroke", y_block = CategoryBlock(),
15
+ ).dataloaders(path=".")
16
+
17
+ learn = tabular_learner(dls, metrics=accuracy, layers=[10,10])
18
+ learn.fit(16, lr=0.025)
19
 
 
 
20
  def predict(age, hypertension, heart_disease, avg_glucose_level, bmi, gender, married, work_type, residence_type, smoking_status):
21
+
22
+ data = [[gender, age, hypertension, heart_disease, married, work_type, residence_type, avg_glucose_level, bmi, smoking_status]]
23
  columns_df = ['gender', 'age', 'hypertension', 'heart_disease', 'ever_married', 'work_type', 'Residence_type', 'avg_glucose_level', 'bmi','smoking_status']
24
+ df_row = pd.DataFrame(data,columns=columns_df)
 
 
25
 
26
+ dl = learn.dls.test_dl(df_row)
27
+ preds,_ = learn.get_preds(dl=dl)
28
 
29
+ return "O paciente tem a seguinte possibilidade de infarto: " + str(preds[0])
30
+
 
 
 
 
 
 
 
 
 
 
 
 
 
31
 
32
  gr.Interface(
33
  fn=predict,
 
39
  gr.Dropdown(["Yes", "No"], label="Hypertension"),
40
  gr.Dropdown(["Yes", "No"], label="Heart disease"),
41
  gr.inputs.Number(default=100, label="Average glucose level"),
42
+ gr.inputs.Number(default=28.8, label="Body Mass Index (BMI)"),
43
  gr.inputs.Radio(choices=["Female", "Male", "Other"], default="Female", label="Gender"),
44
  gr.Dropdown(["No", "Yes"], label="Married"),
45
  gr.Dropdown(["Governamental", "Never worked", "Private", "Self-employed", "Children"], label="Work type"),