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

от автора

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)


ссылка на оригинал статьи https://habr.com/ru/articles/886344/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *