Spaces:
Sleeping
Sleeping
File size: 3,380 Bytes
bcf5195 052e9fc bcf5195 052e9fc bcf5195 d1fc4e2 bcf5195 d1fc4e2 bcf5195 d1fc4e2 bcf5195 d1fc4e2 bcf5195 d1fc4e2 bcf5195 d1fc4e2 bcf5195 69d6037 bcf5195 d1fc4e2 052e9fc d1fc4e2 bcf5195 d1fc4e2 bcf5195 d1fc4e2 bcf5195 d1fc4e2 bcf5195 d1fc4e2 bcf5195 d1fc4e2 bcf5195 d1fc4e2 bcf5195 d1fc4e2 bcf5195 052e9fc |
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 |
from huggingface_hub import hf_hub_download
import gradio as gr
import pandas as pd
import tensorflow as tf
import numpy as np
from dateutil.utils import today
from datasets import load_dataset
model_path = hf_hub_download(repo_id="MaxJalo/CardioAI", filename="cardioai_model.keras")
model = tf.keras.models.load_model(model_path)
heart = load_dataset("MaxJalo/CardioAI", split = 'train')
data = pd.DataFrame(heart, columns=["age","gender","height","weight","ap_hi","ap_lo","cholesterol","gluc","smoke","alco","active",'cardio'])
X_for_train = data.drop(['cardio'], axis=1).values
X_min = np.min(X_for_train, axis=0)
X_max = np.max(X_for_train, axis=0)
def webai(user_input):
user_input_clear = user_input
input_data = [user_input_clear]
input_data_scaled = (input_data - X_min) / (X_max - X_min)
# Получаем предсказание от модели
predicted_result_scaled = model.predict(input_data_scaled)
otv = round(predicted_result_scaled[0][0] * 100, 2)
if otv < 0:
otv = 0
elif otv > 100:
otv = 100
chans = ''
if otv >=0 and otv < 30:
chans = "Низкий"
elif otv >=30 and otv <50:
chans = "Средний"
elif otv >=50 and otv <70:
chans = "Высокий, обратитесь к кардиологу"
else:
chans = "Крайне высокий, обязательно обратитесь к кардиологу"
return f'Вероятность заболевания: {round(otv, 2)}%. Шанс вашего заболевания: ' + chans
def pomoch(age, gender, height, weight, ap_hi, ap_lo, cholesterol, gluc, smoke, alco, active):
try:
X = [int(age), gender, int(height), int(weight), int(ap_hi), int(ap_lo), float(cholesterol), float(gluc), smoke,
alco, active]
X[0] = today().year - X[0]
if X[1] == "Мужской":
X[1] = 0
else:
X[1] = 1
for i in range(8, 11):
if X[i] == "Да":
X[i] = 1
else:
X[i] = 0
if X[6] <= 5:
X[6] = 1
else:
if X[6] >= 7.8:
X[6] = 3
else:
X[6] = 2
if X[7] <= 5.5 and X[7] >= 3.3:
X[7] = 1
else:
if (X[7] > 5.5 and X[7] < 11) or X[7] < 3.3:
X[7] = 2
else:
X[7] = 3
return webai(X)
except ValueError:
return "Пожалуйста, убедитесь, что все значения числовые."
demo = gr.Interface(
pomoch,
[
gr.Slider(1900, 2010, value=1990, step=1, label="Год рождения"),
gr.Radio(["Мужской", "Женский"], label="Пол", ),
gr.Textbox(label="Рост(см)"),
gr.Textbox(label="Вес(кг)"),
gr.Textbox(label="Верхнее Давление"),
gr.Textbox(label="Нижнее Давление"),
gr.Textbox(label="Холестерин(ммоль/л)"),
gr.Textbox(label="Глюкоза(ммоль/л)", ),
gr.Radio(["Да", "Нет"], label="Курение", ),
gr.Radio(["Да", "Нет"], label="Алкоголь", ),
gr.Radio(["Да", "Нет"], label="Активность", ),
],
'text')
demo.launch()
|