|
import streamlit as st |
|
import json |
|
import requests |
|
import pandas as pd |
|
import numpy as np |
|
import pickle |
|
|
|
st.title("Прогнозирование фракции выброса левого желудочка") |
|
|
|
|
|
col1, col2, col3, col4, col5 = st.columns(5) |
|
|
|
kco = 57.0 |
|
kcr = 36.0 |
|
kdo = 128.5 |
|
cdla = 28.0 |
|
nyha = 2.0 |
|
|
|
mod = st.radio( |
|
"Выберите модель", |
|
options=["Линейная", "Нелинейная"] |
|
) |
|
|
|
with col1: |
|
f1 = st.text_input('КCО') |
|
with col2: |
|
f2 =st.text_input('КСР') |
|
with col3: |
|
f3 = st.text_input('КДО') |
|
with col4: |
|
f4 = st.text_input('СДЛА') |
|
with col5: |
|
f5 = st.text_input('NYHA') |
|
|
|
|
|
filename_model = 'huber.pickle' |
|
filename_scaler = 'scaler.pickle' |
|
filename_cat = 'catboost.pickle' |
|
|
|
loaded_model = pickle.load(open(filename_model, 'rb')) |
|
loaded_scaler = pickle.load(open(filename_scaler, 'rb')) |
|
loaded_cat = pickle.load(open(filename_cat, 'rb')) |
|
|
|
|
|
if st.button('OK'): |
|
|
|
if f1 == '': |
|
st.write('Вы не ввели КСО, будет использовано медианное значение') |
|
f1 = kco |
|
if f2 == '': |
|
st.write('Вы не ввели КСР, будет использовано медианное значение') |
|
f2 = kcr |
|
if f3 == '': |
|
st.write('Вы не ввели КДО, будет использовано медианное значение') |
|
f3 = kdo |
|
if f4 == '': |
|
st.write('Вы не ввели СДЛА, будет использовано медианное значение') |
|
f4 = cdla |
|
if f5 == '': |
|
st.write('Вы не ввели NYHA, будет использовано медианное значение') |
|
f5 = nyha |
|
|
|
line = np.array([[float(f1), float(f2), float(f3), float(f4), float(f5)]]) |
|
|
|
if mod == 'Линейная': |
|
line_norm = loaded_scaler.transform(line) |
|
res = loaded_model.predict(line_norm)[0] |
|
st.write(int(res)) |
|
else: |
|
res = loaded_cat.predict(line)[0] |
|
st.write(int(res)) |
|
|