zendeer commited on
Commit
c62dbf7
1 Parent(s): 812da14

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +139 -33
app.py CHANGED
@@ -5,16 +5,23 @@ import pandas as pd
5
  import numpy as np
6
  import pickle
7
 
 
 
8
  st.title("Прогнозирование фракции выброса левого желудочка")
9
 
10
 
11
- col1, col2, col3, col4, col5 = st.columns(5)
12
 
13
- kco = 57.0
14
- kcr = 36.0
15
- kdo = 128.5
16
- cdla = 28.0
17
- nyha = 2.0
 
 
 
 
 
18
 
19
  mod = st.radio(
20
  "Выберите модель",
@@ -22,51 +29,150 @@ mod = st.radio(
22
  )
23
 
24
  with col1:
25
- f1 = st.text_input('КCО')
 
26
  with col2:
27
- f2 =st.text_input('КСР')
 
28
  with col3:
29
- f3 = st.text_input('КДО')
 
30
  with col4:
31
- f4 = st.text_input('СДЛА')
 
32
  with col5:
33
- f5 = st.text_input('NYHA')
34
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
 
36
- filename_model = 'huber.pickle'
37
- filename_scaler = 'scaler.pickle'
38
- filename_cat = 'catboost.pickle'
 
39
 
40
  loaded_model = pickle.load(open(filename_model, 'rb'))
41
  loaded_scaler = pickle.load(open(filename_scaler, 'rb'))
42
  loaded_cat = pickle.load(open(filename_cat, 'rb'))
 
 
43
 
 
 
 
 
 
 
 
 
44
 
45
  if st.button('OK'):
46
 
47
- if f1 == '':
48
- st.write('Вы не ввели КСО, будет использовано медианное значение')
49
- f1 = kco
50
- if f2 == '':
51
- st.write('Вы не ввели КСР, будет использовано медианное значение')
52
- f2 = kcr
53
- if f3 == '':
54
- st.write('Вы не ввели КДО, будет использовано медианное значение')
55
- f3 = kdo
56
- if f4 == '':
57
- st.write('Вы не ввели СДЛА, будет использовано медианное значение')
58
- f4 = cdla
59
- if f5 == '':
60
- st.write('Вы не ввели NYHA, будет использовано медианное значение')
61
- f5 = nyha
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
62
 
63
- line = np.array([[float(f1), float(f2), float(f3), float(f4), float(f5)]])
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
64
 
65
  if mod == 'Линейная':
66
- line_norm = loaded_scaler.transform(line)
67
  res = loaded_model.predict(line_norm)[0]
68
  st.header(int(res))
69
  else:
70
- res = loaded_cat.predict(line)[0]
71
  st.header(int(res))
72
 
 
5
  import numpy as np
6
  import pickle
7
 
8
+ st.set_page_config(layout="wide")
9
+
10
  st.title("Прогнозирование фракции выброса левого желудочка")
11
 
12
 
13
+ col1, col2, col3, col4, col5, col6, col7, col8, col9, col10 = st.columns(10)
14
 
15
+ vozrast = 57
16
+ pim = 2
17
+ cd = 3
18
+ fp = 2
19
+ nyha = 2
20
+ ckf= 78
21
+ nt = 235
22
+ kcr = 36
23
+ lp = 38
24
+ st2 = 38
25
 
26
  mod = st.radio(
27
  "Выберите модель",
 
29
  )
30
 
31
  with col1:
32
+ f1 = st.text_input('возраст')
33
+ vozrast_check = st.checkbox('возраст', value=True)
34
  with col2:
35
+ f2 =st.text_input('ПИМ')
36
+ pim_check = st.checkbox('ПИМ', value=True)
37
  with col3:
38
+ f3 = st.text_input('СД')
39
+ cd_check = st.checkbox('СД', value=True)
40
  with col4:
41
+ f4 = st.text_input('ФП')
42
+ fp_check = st.checkbox('ФП', value=True)
43
  with col5:
44
+ f5 = st.text_input('NYHA')
45
+ nyha_check = st.checkbox('NYHA', value=True)
46
+ with col6:
47
+ f6 = st.text_input('СКФ CKD-EPI')
48
+ ckf_check = st.checkbox('СКФ CKD-EPI', value=True)
49
+ with col7:
50
+ f7 =st.text_input('NT_proBNP')
51
+ nt_check = st.checkbox('NT_proBNP', value=True)
52
+ with col8:
53
+ f8 = st.text_input('КСР')
54
+ kcr_check = st.checkbox('КСР', value=True)
55
+ with col9:
56
+ f9 = st.text_input('ЛП')
57
+ lp_check = st.checkbox('ЛП', value=True)
58
+ with col10:
59
+ f10 = st.text_input('ST2')
60
+ st2_check = st.checkbox('ST2', value=True)
61
+
62
+
63
 
64
+ filename_model = 'huber2.pickle'
65
+ filename_scaler = 'scaler2.pickle'
66
+ filename_cat = 'catboost2.pickle'
67
+ filename_ohe = 'ohe2.pickle'
68
 
69
  loaded_model = pickle.load(open(filename_model, 'rb'))
70
  loaded_scaler = pickle.load(open(filename_scaler, 'rb'))
71
  loaded_cat = pickle.load(open(filename_cat, 'rb'))
72
+ loaded_ohe = pickle.load(open(filename_ohe, 'rb'))
73
+
74
 
75
+ cd = 3
76
+ fp = 2
77
+ nyha = 2
78
+ ckf= 78
79
+ nt = 235
80
+ kcr = 36
81
+ lp = 38
82
+ st2 = 38
83
 
84
  if st.button('OK'):
85
 
86
+ if vozrast_check:
87
+ if f1 == '':
88
+ st.write('Вы не ввели возраст, будет использовано медианное значение')
89
+ f1 = vozrast
90
+ else:
91
+ f1 = 0
92
+
93
+ if pim_check:
94
+ if f2 == '':
95
+ st.write('Вы не ввели ПИМ, будет использовано медианное значение')
96
+ f2 = pim
97
+ else:
98
+ f2 = 0
99
+
100
+ if cd_check:
101
+ if f3 == '':
102
+ st.write('Вы не ввели СД, будет использовано медианное значение')
103
+ f3 = cd
104
+ else:
105
+ f3 = 0
106
+
107
+ if fp_check:
108
+ if f4 == '':
109
+ st.write('Вы не ввели ФП, будет использовано медианное значение')
110
+ f4 = fp
111
+ else:
112
+ f4 = 0
113
+
114
+ if nyha_check:
115
+ if f5 == '':
116
+ st.write('Вы не ввели NYHA, будет использовано медианное значение')
117
+ f5 = nyha
118
+ else:
119
+ f5 = 0
120
 
121
+ if ckf_check:
122
+ if f6 == '':
123
+ st.write('Вы не ввели СКФ CKD-EPI, будет использовано медианное значение')
124
+ f6 = ckf
125
+ else:
126
+ f6 = 0
127
+
128
+ if nt_check:
129
+ if f7 == '':
130
+ st.write('Вы не ввели NT_proBNP, будет использовано медианное значение')
131
+ f7 = nt
132
+ else:
133
+ f7 = 0
134
+
135
+ if kcr_check:
136
+ if f8 == '':
137
+ st.write('Вы не ввели КСР, будет использовано медианное значение')
138
+ f8 = kcr
139
+ else:
140
+ f8 = 0
141
+
142
+ if lp_check:
143
+ if f9 == '':
144
+ st.write('Вы не ввели ЛП, будет использовано медианное значение')
145
+ f9 = lp
146
+ else:
147
+ f9 = 0
148
+
149
+ if st2:
150
+ if f10 == '':
151
+ st.write('Вы не ввели ST2, будет использовано медианное значение')
152
+ f10 = st2
153
+ else:
154
+ f10 = 0
155
+
156
+ # line = np.array([[float(f1), str(f2), str(f3), str(f4), str(f5), float(f6), float(f7), float(f8), float(f9), float(f10)]])
157
+
158
+ line = np.array([[float(f1), str(f2), str(f3), str(f4), str(f5), float(f6), float(f7), float(f8), float(f9), float(f10)]])
159
+ picked_cols = ['возраст', 'ПИМ', 'СД', 'ФП', 'NYHA', 'СКФ CKD-EPI', 'NT_proBNP', 'КСР', 'ЛП', 'ST2']
160
+ categorical_cols = ['ПИМ', 'СД', 'ФП', 'NYHA']
161
+ num_cols = ['возраст', 'СКФ CKD-EPI', 'NT_proBNP', 'КСР', 'ЛП', 'ST2']
162
+
163
+ X = pd.DataFrame(line, columns=picked_cols)
164
+
165
+ X_transform = pd.DataFrame(loaded_ohe.transform(X[categorical_cols]).toarray()).set_index(X.index)
166
+ X_transform.columns = loaded_ohe.get_feature_names_out()
167
+
168
+ X_encode = pd.concat([X_transform, X[num_cols]], axis=1)
169
+
170
+ line_norm = loaded_scaler.transform(X_encode)
171
 
172
  if mod == 'Линейная':
 
173
  res = loaded_model.predict(line_norm)[0]
174
  st.header(int(res))
175
  else:
176
+ res = loaded_cat.predict(line_norm)[0]
177
  st.header(int(res))
178