Как стать автором
Обновить

Основы streamlit для работы с текстами на питон(python3)

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров416

Streamlit — это фреймворк для языка программирования Python с открытым исходным кодом, который позволяет создавать интерактивные панели и приложения на базе машинного обучения и делиться ими. 

С помощью Streamlit можно быстро превратить модель машинного обучения или обычную программу в одностраничное веб-приложение и управлять им. Фреймворк преобразует результат работы модели в вид, понятный человеку и подходящий для загрузки на сайт. 

Некоторые возможности Streamlit:

  • Быстрое развёртывание. Несколько десятков строк кода — и веб-приложение готово, отрисовано и работает. 

  • Интерактивные скрипты. Каждый раз, когда пользователь взаимодействует с веб-интерфейсом или разработчик меняет что-то в коде, Streamlit сам обновляет и перерисовывает нужные части страницы. 

  • Виджеты и визуализация. В Streamlit есть встроенные стандартные виджеты для частых действий, например ползунки или поля для ввода текста. Ещё можно отрисовать график или картинку, вывести результат работы программы в виде схемы или таблицы. 

import streamlit as st
import pandas as pd
import pickle
from sklearn.metrics.pairwise import cosine_similarity

# Создание интерфейса Streamlit
st.title("Рекомендация отелей")

# Инструкция
st.markdown("""
### Инструкция:
1. Введите текст в поле ниже.
2. Нажмите кнопку "Предсказать".
3. Результат предсказания для всех отелей появится сразу ниже.
4. Вы можете очистить ввод и попробовать снова.
""")

# Ввод текста
user_input = st.text_area("Введите запрос:", "")

# Кнопка предсказания
if st.button("Предсказать"):

    if user_input:
        prediction = model(user_input)

        st.write("Рекомендуемые отели:")
        for i, hotel in enumerate(prediction):
            st.write(f"{i+1}: {hotel}")
import pandas as pd
import numpy as np
from sklearn.preprocessing import LabelEncoder
from collections import Counter
import phik 
from phik.report import plot_correlation_matrix
from sklearn.model_selection import train_test_split
from sklearn.metrics import f1_score
import matplotlib.pyplot as plt

# варианты моделей
from catboost import CatBoostClassifier
from xgboost import XGBRFClassifier
from sklearn.ensemble import RandomForestClassifier
from lightgbm import LGBMClassifier
from lightautoml import automl
from lightautoml.automl.presets.tabular_presets import TabularAutoML
from lightautoml.tasks import Task
# pyboost

# для ансамблирования 
from sklearn.ensemble import VotingClassifier

# заморозка сидов
import torch
import random

def set_seed(seed):
    random.seed(seed)
    np.random.seed(seed)
    torch.manual_seed(seed)

    if torch.cuda.is_available():
        torch.cuda.manual_seed(seed)
        torch.cuda.manual_seed_all(seed)

    torch.backends.cudnn.deterministic = True
    torch.backends.cudnn.benchmark = False

set_seed(1001)
df = pd.read_csv('train_1.csv', index_col = 0)
df
df.sort_index(inplace=True)
df
pred_df = pd.read_csv('test_1.csv', index_col = 0)
pred_df
pred_df.sort_index(inplace=True)
pred_df
set(df.columns) - set(pred_df.columns)
print(df.info())
df
df.isna().sum().sum()
pred_df.isna().sum().sum()
# сравнить показатели датафреймов
Counter(df.machine_type), Counter(pred_df.machine_type)
Counter(df['failure_flag'])
le = LabelEncoder()

df['machine_type'] = le.fit_transform(df['machine_type'])
df
pred_df['machine_type'] = le.fit_transform(pred_df['machine_type'])
phik_matrix = df.phik_matrix()

plot_correlation_matrix(phik_matrix.values,
                        x_labels = phik_matrix.columns,
                        y_labels = phik_matrix.index,
                        title = 'phik correlation matrix',
                        fontsize_factor=0.8, figsize=(11, 6)
)
# удалить колонки с слишком высокой корреляцией
phik_matrix = pred_df.phik_matrix()

plot_correlation_matrix(phik_matrix.values,
                        x_labels = phik_matrix.columns,
                        y_labels = phik_matrix.index,
                        title = 'phik correlation matrix',
                        fontsize_factor=0.8, figsize=(11, 6)
)
# сравнить корредяции в датафреймах
X = df.drop(columns = ['failure_flag'])
X
y = df.failure_flag
y
# подобрать метод валидации
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.33, random_state=42, stratify=y)
model1 = CatBoostClassifier(iterations=200, depth=6, learning_rate=0.1, verbose=0)
model2 = CatBoostClassifier(iterations=300, depth=8, learning_rate=0.05, verbose=0)
model1.fit(X_train, y_train)
feature_importance = model1.feature_importances_
sorted_idx = np.argsort(feature_importance)
fig = plt.figure(figsize=(15, 10))
plt.barh(range(len(sorted_idx)), feature_importance[sorted_idx], align='center')
plt.yticks(range(len(sorted_idx)), np.array(X_test.columns)[sorted_idx])
plt.title('Feature Importance')
# Создание ансамбля с голосованием
model = VotingClassifier(
    estimators=[
        ('cat1', model1), 
        ('cat2', model2)
     ],
    verbose=True,
    # n_jobs = -1,
    voting='hard'  # Можно использовать 'hard' или 'soft'
)
model.fit(X_train, y_train)
f1_score(y_test, model.predict(X_test), average='macro')
pred = model.predict(pred_df)
pred
pred_df['failure_flag'] = pred
pred_df.to_csv('sub.csv', index=False)

Теги:
Хабы:
Всего голосов 4: ↑1 и ↓3-2
Комментарии0

Публикации

Истории

Работа

Data Scientist
53 вакансии

Ближайшие события

8 апреля
Конференция TEAMLY WORK MANAGEMENT 2025
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань
20 – 22 июня
Летняя айти-тусовка Summer Merge
Ульяновская область