Mykes commited on
Commit
a64bd45
·
verified ·
1 Parent(s): b330e7c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +42 -128
app.py CHANGED
@@ -44,26 +44,6 @@ st.markdown("""
44
  .small-font {
45
  font-size: 0.8rem;
46
  }
47
- @media (max-width: 768px) {
48
- /* Основной контейнер */
49
- .main .block-container {
50
- padding: 1rem;
51
- }
52
- /* Карточки примеров */
53
- .metric-card {
54
- margin: 1rem 0;
55
- padding: 0.5rem;
56
- background-color: #f0f2f6;
57
- }
58
- /* Колонки: одна под другой */
59
- .stColumns > div {
60
- width: 100% !important;
61
- }
62
- /* Текст и элементы */
63
- .stNumberInput input, .stSelectbox select {
64
- width: 100%;
65
- }
66
- }
67
  </style>
68
  """, unsafe_allow_html=True)
69
 
@@ -208,60 +188,29 @@ def create_example_card(title, description, values, key):
208
  if st.button('Применить этот пример', key=key):
209
  st.session_state['current_example'] = values
210
 
211
- if st.session_state.get('is_mobile', False): # Если мобильное устройство
212
- for key, example in example_cases.items():
213
- create_example_card(
214
- example['title'],
215
- example['description'],
216
- example['values'],
217
- f'example_{key}'
218
- )
219
- else: # Для десктопа
220
- col1, col2, col3 = st.columns(3)
221
- with col1:
222
- create_example_card(
223
- example_cases['контр']['title'],
224
- example_cases['контр']['description'],
225
- example_cases['контр']['values'],
226
- 'example_control'
227
- )
228
- with col2:
229
- create_example_card(
230
- example_cases['топирамат']['title'],
231
- example_cases['топирамат']['description'],
232
- example_cases['топирамат']['values'],
233
- 'example_topirama'
234
- )
235
- with col3:
236
- create_example_card(
237
- example_cases['леветирацетам']['title'],
238
- example_cases['леветирацетам']['description'],
239
- example_cases['леветирацетам']['values'],
240
- 'example_levetiracetam'
241
- )
242
- # with col1:
243
- # create_example_card(
244
- # example_cases['контр']['title'],
245
- # example_cases['контр']['description'],
246
- # example_cases['контр']['values'],
247
- # 'example_control'
248
- # )
249
 
250
- # with col2:
251
- # create_example_card(
252
- # example_cases['топирамат']['title'],
253
- # example_cases['топирамат']['description'],
254
- # example_cases['топирамат']['values'],
255
- # 'example_topirama'
256
- # )
257
 
258
- # with col3:
259
- # create_example_card(
260
- # example_cases['леветирацетам']['title'],
261
- # example_cases['леветирацетам']['description'],
262
- # example_cases['леветирацетам']['values'],
263
- # 'example_levetiracetam'
264
- # )
265
 
266
  # # Описание в основной части
267
  # with st.container():
@@ -282,47 +231,12 @@ else: # Для десктопа
282
 
283
  # Боковая панель для ввода данных
284
  with st.sidebar:
285
- st.markdown("""
286
- <style>
287
- @media (max-width: 768px) {
288
- div[data-testid="stSidebarNav"] {
289
- width: 100% !important;
290
- }
291
- }
292
- </style>
293
- """, unsafe_allow_html=True)
294
  st.header('Ввод данных')
295
 
296
  # Создаем вкладки для разных типов параметров
297
  tab1, tab2 = st.tabs(["📊 Непрерывные", "📋 Категориальные"])
298
 
299
  input_data = {}
300
- # Кнопка классификации
301
- if st.button('Выполнить классификацию', use_container_width=True):
302
- with st.spinner('Выполняется классификация...'):
303
- # Преобразование входных данных
304
- input_df = pd.DataFrame([input_data])
305
-
306
- # One-hot encoding для категориальных признаков
307
- input_df_encoded = pd.get_dummies(input_df, columns=categorical_features)
308
-
309
- # Масштабирование числовых признаков
310
- if numeric_features:
311
- input_df_encoded[numeric_features] = scaler.transform(input_df_encoded[numeric_features])
312
-
313
- # Убедитесь, что все необходимые столбцы присутствуют
314
- for col in feature_list:
315
- if col not in input_df_encoded.columns:
316
- input_df_encoded[col] = 0
317
-
318
- X_pred = input_df_encoded[feature_list]
319
- prediction = model.predict(X_pred)
320
- probabilities = model.predict_proba(X_pred)[0]
321
-
322
- # Сохраняем результаты в session state
323
- st.session_state['prediction'] = prediction[0]
324
- st.session_state['probabilities'] = probabilities
325
- st.session_state['input_data'] = input_df
326
 
327
  # Получаем значения из примера, если он выбран
328
  current_example = st.session_state.get('current_example', {})
@@ -385,32 +299,32 @@ with st.sidebar:
385
  help=f"Типичное: {categorical_defaults[feature]}"
386
  )
387
 
388
- # # Кнопка классификации
389
- # if st.button('Выполнить классификацию', use_container_width=True):
390
- # with st.spinner('Выполняется классификация...'):
391
- # # Преобразование входных данных
392
- # input_df = pd.DataFrame([input_data])
393
 
394
- # # One-hot encoding для категориальных признаков
395
- # input_df_encoded = pd.get_dummies(input_df, columns=categorical_features)
396
 
397
- # # Масштабирование числовых признаков
398
- # if numeric_features:
399
- # input_df_encoded[numeric_features] = scaler.transform(input_df_encoded[numeric_features])
400
 
401
- # # Убедитесь, что все необходимые столбцы присутствуют
402
- # for col in feature_list:
403
- # if col not in input_df_encoded.columns:
404
- # input_df_encoded[col] = 0
405
 
406
- # X_pred = input_df_encoded[feature_list]
407
- # prediction = model.predict(X_pred)
408
- # probabilities = model.predict_proba(X_pred)[0]
409
 
410
- # # Сохраняем результаты в session state
411
- # st.session_state['prediction'] = prediction[0]
412
- # st.session_state['probabilities'] = probabilities
413
- # st.session_state['input_data'] = input_df
414
 
415
  # Отображение результатов в основной части
416
  if 'prediction' in st.session_state:
 
44
  .small-font {
45
  font-size: 0.8rem;
46
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47
  </style>
48
  """, unsafe_allow_html=True)
49
 
 
188
  if st.button('Применить этот пример', key=key):
189
  st.session_state['current_example'] = values
190
 
191
+ with col1:
192
+ create_example_card(
193
+ example_cases['контр']['title'],
194
+ example_cases['контр']['description'],
195
+ example_cases['контр']['values'],
196
+ 'example_control'
197
+ )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
198
 
199
+ with col2:
200
+ create_example_card(
201
+ example_cases['топирамат']['title'],
202
+ example_cases['топирамат']['description'],
203
+ example_cases['топирамат']['values'],
204
+ 'example_topirama'
205
+ )
206
 
207
+ with col3:
208
+ create_example_card(
209
+ example_cases['леветирацетам']['title'],
210
+ example_cases['леветирацетам']['description'],
211
+ example_cases['леветирацетам']['values'],
212
+ 'example_levetiracetam'
213
+ )
214
 
215
  # # Описание в основной части
216
  # with st.container():
 
231
 
232
  # Боковая панель для ввода данных
233
  with st.sidebar:
 
 
 
 
 
 
 
 
 
234
  st.header('Ввод данных')
235
 
236
  # Создаем вкладки для разных типов параметров
237
  tab1, tab2 = st.tabs(["📊 Непрерывные", "📋 Категориальные"])
238
 
239
  input_data = {}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
240
 
241
  # Получаем значения из примера, если он выбран
242
  current_example = st.session_state.get('current_example', {})
 
299
  help=f"Типичное: {categorical_defaults[feature]}"
300
  )
301
 
302
+ # Кнопка классификации
303
+ if st.button('Выполнить классификацию', use_container_width=True):
304
+ with st.spinner('Выполняется классификация...'):
305
+ # Преобразование входных данных
306
+ input_df = pd.DataFrame([input_data])
307
 
308
+ # One-hot encoding для категориальных признаков
309
+ input_df_encoded = pd.get_dummies(input_df, columns=categorical_features)
310
 
311
+ # Масштабирование числовых признаков
312
+ if numeric_features:
313
+ input_df_encoded[numeric_features] = scaler.transform(input_df_encoded[numeric_features])
314
 
315
+ # Убедитесь, что все необходимые столбцы присутствуют
316
+ for col in feature_list:
317
+ if col not in input_df_encoded.columns:
318
+ input_df_encoded[col] = 0
319
 
320
+ X_pred = input_df_encoded[feature_list]
321
+ prediction = model.predict(X_pred)
322
+ probabilities = model.predict_proba(X_pred)[0]
323
 
324
+ # Сохраняем результаты в session state
325
+ st.session_state['prediction'] = prediction[0]
326
+ st.session_state['probabilities'] = probabilities
327
+ st.session_state['input_data'] = input_df
328
 
329
  # Отображение результатов в основной части
330
  if 'prediction' in st.session_state: