Spaces:
Sleeping
Sleeping
File size: 2,904 Bytes
de2bb03 |
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 |
import streamlit as st
import pandas as pd
import numpy as np
from sklearn.preprocessing import StandardScaler
import pickle
import joblib
# Загрузка сохраненной модели и других необходимых объектов
@st.cache_resource
def load_model():
model = joblib.load('model.joblib')
scaler = joblib.load('scaler.joblib')
feature_list = joblib.load('features.joblib')
return model, scaler, feature_list
model, scaler, feature_list = load_model()
st.title('Классификатор пациентов')
# Создание формы ввода для всех необходимых признаков
def get_user_input():
input_data = {}
# Числовые признаки
st.subheader('Числовые параметры')
for feature in feature_list:
if feature not in categorical_features: # список категориальных признаков нужно определить
input_data[feature] = st.number_input(f'{feature}', value=0.0)
# Категориальные признаки
st.subheader('Категориальные параметры')
for feature in feature_list:
if feature in categorical_features: # список категориальных признаков
options = categorical_options[feature] # словарь с возможными значениями для каждого признака
input_data[feature] = st.selectbox(f'{feature}', options)
return input_data
# Получение данных от пользователя
user_input = get_user_input()
# Кнопка для выполнения предсказания
if st.button('Выполнить классификацию'):
# Преобразование входных данных
input_df = pd.DataFrame([user_input])
# One-hot encoding для категориальных признаков
input_df_encoded = pd.get_dummies(input_df, columns=categorical_features)
# Убедитесь, что все необходимые столбцы присутствуют
for col in feature_list:
if col not in input_df_encoded.columns:
input_df_encoded[col] = 0
# Масштабирование числовых признаков
numeric_cols = [col for col in input_df_encoded.columns if col not in categorical_features]
input_df_encoded[numeric_cols] = scaler.transform(input_df_encoded[numeric_cols])
# Получение предсказания
prediction = model.predict(input_df_encoded[feature_list])
# Отображение результата
group_names = {0: 'контр', 1: 'топирамат', 2: 'леветирацетам'}
st.success(f'Предсказанная группа: {group_names[prediction[0]]}') |