Mykes commited on
Commit
de2bb03
·
verified ·
1 Parent(s): 3dc5b52

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +64 -0
app.py ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import pandas as pd
3
+ import numpy as np
4
+ from sklearn.preprocessing import StandardScaler
5
+ import pickle
6
+ import joblib
7
+
8
+ # Загрузка сохраненной модели и других необходимых объектов
9
+ @st.cache_resource
10
+ def load_model():
11
+ model = joblib.load('model.joblib')
12
+ scaler = joblib.load('scaler.joblib')
13
+ feature_list = joblib.load('features.joblib')
14
+ return model, scaler, feature_list
15
+
16
+ model, scaler, feature_list = load_model()
17
+
18
+ st.title('Классификатор пациентов')
19
+
20
+ # Создание формы ввода для всех необходимых признаков
21
+ def get_user_input():
22
+ input_data = {}
23
+
24
+ # Числовые признаки
25
+ st.subheader('Числовые параметры')
26
+ for feature in feature_list:
27
+ if feature not in categorical_features: # список категориальных признаков нужно определить
28
+ input_data[feature] = st.number_input(f'{feature}', value=0.0)
29
+
30
+ # Категориальные признаки
31
+ st.subheader('Категориальные параметры')
32
+ for feature in feature_list:
33
+ if feature in categorical_features: # список категориальных признаков
34
+ options = categorical_options[feature] # словарь с возможными значениями для каждого признака
35
+ input_data[feature] = st.selectbox(f'{feature}', options)
36
+
37
+ return input_data
38
+
39
+ # Получение данных от пользователя
40
+ user_input = get_user_input()
41
+
42
+ # Кнопка для выполнения предсказания
43
+ if st.button('Выполнить классификацию'):
44
+ # Преобразование входных данных
45
+ input_df = pd.DataFrame([user_input])
46
+
47
+ # One-hot encoding для категориальных признаков
48
+ input_df_encoded = pd.get_dummies(input_df, columns=categorical_features)
49
+
50
+ # Убедитесь, что все необходимые столбцы присутствуют
51
+ for col in feature_list:
52
+ if col not in input_df_encoded.columns:
53
+ input_df_encoded[col] = 0
54
+
55
+ # Масштабирование числовых признаков
56
+ numeric_cols = [col for col in input_df_encoded.columns if col not in categorical_features]
57
+ input_df_encoded[numeric_cols] = scaler.transform(input_df_encoded[numeric_cols])
58
+
59
+ # Получение предсказания
60
+ prediction = model.predict(input_df_encoded[feature_list])
61
+
62
+ # Отображение результата
63
+ group_names = {0: 'контр', 1: 'топирамат', 2: 'леветирацетам'}
64
+ st.success(f'Предсказанная группа: {group_names[prediction[0]]}')