Шаг разработки 2. Создание веб-приложения и интеграция модели.

Шаг 2.1. Импорт библиотек

import streamlit as stimport numpy as npimport pandas as pdimport joblib

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

Шаг 2.2. Получение и кодирование входных данных.

data = {    \\\"island\\\": island,    \\\"bill_length_mm\\\": bill_length_mm,    \\\"bill_depth_mm\\\": bill_depth_mm,    \\\"flipper_length_mm\\\": flipper_length_mm,    \\\"body_mass_g\\\": body_mass_g,    \\\"sex\\\": sex,}input_df = pd.DataFrame(data, index=[0])encode = [\\\"island\\\", \\\"sex\\\"]input_encoded_df = pd.get_dummies(input_df, prefix=encode)

Входные значения извлекаются из формы ввода, созданной Stremlit, а категориальные переменные кодируются с использованием тех же правил, что и при создании модели. Обратите внимание, что порядок каждых данных должен быть таким же, как при создании модели. Если порядок другой, при выполнении прогноза с использованием модели произойдет ошибка.

Шаг 2.3. Загрузите модель

clf = joblib.load(\\\"penguin_classifier_model.pkl\\\")

\\\"penguin_classifier_model.pkl\\\" — это файл, в котором хранится ранее сохраненная модель. Этот файл содержит обученный RandomForestClassifier в двоичном формате. Запуск этого кода загружает модель в clf, что позволяет использовать ее для прогнозов и оценок новых данных.

Шаг 2.4. Выполнение прогноза

prediction = clf.predict(input_encoded_df)prediction_proba = clf.predict_proba(input_encoded_df)

clf.predict(input_encoded_df): использует обученную модель для прогнозирования класса для новых закодированных входных данных, сохраняя результат в прогнозировании.
clf.predict_proba(input_encoded_df): вычисляет вероятность для каждого класса, сохраняя результаты в Predict_proba.

Пример кода

Шаг3. Развертывать

\\\"Machine

Вы можете опубликовать разработанное вами приложение в Интернете, зайдя в облако сообщества Stremlit (https://streamlit.io/cloud) и указав URL-адрес репозитория GitHub.

О наборе данных

\\\"Machine

Работа @allison_horst (https://github.com/allisonhorst)

Модель обучена с использованием набора данных Palmer Penguins, широко известного набора данных для отработки методов машинного обучения. Этот набор данных предоставляет информацию о трех видах пингвинов (Адели, Чинстрап и Генту) с архипелага Палмера в Антарктиде. Ключевые особенности:

Этот набор данных взят из Kaggle, и доступ к нему можно получить здесь. Разнообразие признаков делает его отличным выбором для построения модели классификации и понимания важности каждого признака для прогнозирования видов.

","image":"http://www.luping.net/uploads/20241006/17282217676702924713227.png","datePublished":"2024-11-02T21:56:21+08:00","dateModified":"2024-11-02T21:56:21+08:00","author":{"@type":"Person","name":"luping.net","url":"https://www.luping.net/articlelist/0_1.html"}}
«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Развертывание модели машинного обучения в виде веб-приложения с использованием Streamlit

Развертывание модели машинного обучения в виде веб-приложения с использованием Streamlit

Опубликовано 2 ноября 2024 г.
Просматривать:260

Введение

Модель машинного обучения — это, по сути, набор правил или механизмов, используемых для прогнозирования или поиска закономерностей в данных. Проще говоря (и не боясь упрощений), линия тренда, рассчитанная с использованием метода наименьших квадратов в Excel, также является моделью. Однако модели, используемые в реальных приложениях, не так просты — они часто включают в себя более сложные уравнения и алгоритмы, а не только простые уравнения.

В этом посте я собираюсь начать с создания очень простой модели машинного обучения и выпустить ее в виде очень простого веб-приложения, чтобы получить представление о процессе.

Здесь я сосредоточусь только на процессе, а не на самой модели машинного обучения. Кроме того, я буду использовать Streamlit и Streamlit Community Cloud, чтобы легко выпускать веб-приложения Python.

ТЛ;ДР:

Используя scikit-learn, популярную библиотеку Python для машинного обучения, вы можете быстро обучать данные и создавать модели с помощью всего нескольких строк кода для решения простых задач. Затем модель можно сохранить как файл многократного использования с помощью joblib. Эту сохраненную модель можно импортировать/загрузить как обычную библиотеку Python в веб-приложении, что позволяет приложению делать прогнозы с использованием обученной модели!

URL приложения: https://yh-machine-learning.streamlit.app/
GitHub: https://github.com/yoshan0921/yh-machine-learning.git

Технологический стек

  • Питон
  • Streamlit: для создания интерфейса веб-приложения.
  • scikit-learn: для загрузки и использования предварительно обученной модели случайного леса.
  • NumPy и Pandas: для манипулирования и обработки данных.
  • Matplotlib и Seaborn: для создания визуализаций.

Что я сделал

Это приложение позволяет вам проверять прогнозы, сделанные с помощью случайной модели леса, обученной на наборе данных Palmer Penguins. (Более подробную информацию о данных обучения см. в конце этой статьи.)

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

  • Экран прогнозов
    Machine Learning Model Deployment as a Web App using Streamlit

  • Экран обучающих данных/визуализации
    Machine Learning Model Deployment as a Web App using Streamlit

Шаг разработки 1 — Создание модели

Шаг 1.1. Импорт библиотек

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
import joblib

pandas — это библиотека Python, специализирующаяся на манипулировании и анализе данных. Он поддерживает загрузку, предварительную обработку и структурирование данных с использованием DataFrames, а также подготовку данных для моделей машинного обучения.
sklearn — это комплексная библиотека Python для машинного обучения, предоставляющая инструменты для обучения и оценки. В этом посте я построю модель, используя метод обучения под названием «Случайный лес».
joblib — это библиотека Python, которая помогает очень эффективно сохранять и загружать объекты Python, такие как модели машинного обучения.

Шаг 1.2 Считайте данные

df = pd.read_csv("./dataset/penguins_cleaned.csv")
X_raw = df.drop("species", axis=1)
y_raw = df.species

Загрузите набор данных (обучающие данные) и разделите его на функции (X) и целевые переменные (y).

Шаг 1.3. Кодирование переменных категории

encode = ["island", "sex"]
X_encoded = pd.get_dummies(X_raw, columns=encode)

target_mapper = {"Adelie": 0, "Chinstrap": 1, "Gentoo": 2}
y_encoded = y_raw.apply(lambda x: target_mapper[x])

Категорийные переменные преобразуются в числовой формат с использованием горячего кодирования (X_encoded). Например, если «остров» содержит категории «Биско», «Мечта» и «Торгерсен», для каждой создается новый столбец (остров_Биско, остров_Мечта, остров_Торгерсен). То же самое делается и с сексом. Если исходные данные — «Биско», столбец Island_Biscoe будет установлен в 1, а остальные — в 0.
Вид целевой переменной отображается в числовые значения (y_encoded).

Шаг 1.4. Разделите набор данных

x_train, x_test, y_train, y_test = train_test_split(
    X_encoded, y_encoded, test_size=0.3, random_state=1
)

Чтобы оценить модель, необходимо измерить ее производительность на данных, не используемых для обучения. 7:3 широко используется в качестве общей практики в машинном обучении.

Шаг 1.5. Обучение модели случайного леса

clf = RandomForestClassifier()
clf.fit(x_train, y_train)

Для обучения модели используется метод подгонки.
x_train представляет данные обучения для независимых переменных, а y_train представляет целевые переменные.
При вызове этого метода модель, обученная на основе обучающих данных, сохраняется в clf.

Шаг 1.6. Сохраните модель.

joblib.dump(clf, "penguin_classifier_model.pkl")

joblib.dump() — это функция для сохранения объектов Python в двоичном формате. Сохранив модель в этом формате, ее можно загрузить из файла и использовать как есть, без необходимости повторного обучения.

Пример кода

Шаг разработки 2. Создание веб-приложения и интеграция модели.

Шаг 2.1. Импорт библиотек

import streamlit as st
import numpy as np
import pandas as pd
import joblib

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

Шаг 2.2. Получение и кодирование входных данных.

data = {
    "island": island,
    "bill_length_mm": bill_length_mm,
    "bill_depth_mm": bill_depth_mm,
    "flipper_length_mm": flipper_length_mm,
    "body_mass_g": body_mass_g,
    "sex": sex,
}
input_df = pd.DataFrame(data, index=[0])

encode = ["island", "sex"]
input_encoded_df = pd.get_dummies(input_df, prefix=encode)

Входные значения извлекаются из формы ввода, созданной Stremlit, а категориальные переменные кодируются с использованием тех же правил, что и при создании модели. Обратите внимание, что порядок каждых данных должен быть таким же, как при создании модели. Если порядок другой, при выполнении прогноза с использованием модели произойдет ошибка.

Шаг 2.3. Загрузите модель

clf = joblib.load("penguin_classifier_model.pkl")

"penguin_classifier_model.pkl" — это файл, в котором хранится ранее сохраненная модель. Этот файл содержит обученный RandomForestClassifier в двоичном формате. Запуск этого кода загружает модель в clf, что позволяет использовать ее для прогнозов и оценок новых данных.

Шаг 2.4. Выполнение прогноза

prediction = clf.predict(input_encoded_df)
prediction_proba = clf.predict_proba(input_encoded_df)

clf.predict(input_encoded_df): использует обученную модель для прогнозирования класса для новых закодированных входных данных, сохраняя результат в прогнозировании.
clf.predict_proba(input_encoded_df): вычисляет вероятность для каждого класса, сохраняя результаты в Predict_proba.

Пример кода

Шаг3. Развертывать

Machine Learning Model Deployment as a Web App using Streamlit

Вы можете опубликовать разработанное вами приложение в Интернете, зайдя в облако сообщества Stremlit (https://streamlit.io/cloud) и указав URL-адрес репозитория GitHub.

О наборе данных

Machine Learning Model Deployment as a Web App using Streamlit

Работа @allison_horst (https://github.com/allisonhorst)

Модель обучена с использованием набора данных Palmer Penguins, широко известного набора данных для отработки методов машинного обучения. Этот набор данных предоставляет информацию о трех видах пингвинов (Адели, Чинстрап и Генту) с архипелага Палмера в Антарктиде. Ключевые особенности:

  • Виды: виды пингвинов (Адели, Чинстрап, Генту).
  • Остров: конкретный остров, на котором наблюдался пингвин (Биско, Дрим, Торгерсен).
  • Длина клюва: длина клюва пингвина (мм).
  • Глубина клюва: глубина клюва пингвина (мм).
  • Длина ласт: длина ласт пингвина (мм).
  • Масса тела: масса пингвина (г).
  • Пол: пол пингвина (самец или самка).

Этот набор данных взят из Kaggle, и доступ к нему можно получить здесь. Разнообразие признаков делает его отличным выбором для построения модели классификации и понимания важности каждого признака для прогнозирования видов.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/yoshan0921/machine-learning-model-deployment-as-a-web-app-using-streamlit-2c5p?1 В случае каких-либо нарушений, пожалуйста, свяжитесь с Study_golang@163. .com, чтобы удалить его
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3