Дата публикации Apr 16, 2019
Я всегда хотел разработать законченное приложение для машинного обучения, в котором у меня был бы пользовательский интерфейс для ввода некоторых входных данных и модель машинного обучения для прогнозирования этих значений. На прошлой неделе я так и сделал. В процессе я создал простой в использовании шаблон в React и Flask, который каждый может изменить, чтобы создать собственное приложение за считанные минуты.
Основные моменты проекта:
Репозиторий GitHub находится ниже. Форк проект и создайте свое собственное приложение сегодня!
React - это библиотека JavaScript, созданная Facebook, чтобы упростить разработку и использование пользовательских интерфейсов. Это один из ведущих языков для фронт-энда. Вы можете прочитать об этомВот, Лучший ресурс, который можно узнать о React, - это его документация, которая очень обширна и проста для понимания.
Flask и Flask-RESTPlus позволяют нам определить сервис на Python, который будет иметь конечные точки, которые мы можем вызывать из пользовательского интерфейса. Вы можете узнать больше о разработке приложения Flask из моей статьи ниже.
я использовалcreate-react-app
создать базовое приложение React для начала. Далее я загрузилbootstrap
что позволяет нам создавать адаптивные сайты для каждого размера экрана. Я обновилApp.js
файл для добавления формы с выпадающими списками иPredict
а такжеReset Prediction
кнопок. Я добавил каждое свойство формы в состояние и после нажатияPredict
Кнопка, я отправляю данные в бэкэнд Flask. Я также обновилApp.css
файл для добавления стиля на страницу.
Приложение Flask имеет конечную точку POST/prediction
, Он принимает входные значения как json, преобразует их в массив и возвращает в пользовательский интерфейс. В реальном приложении мы будем использовать те же данные для прогнозирования с использованием классификатора, хранящегося вclassifier.joblib
и вернуть прогноз.
Reset Prediction
удалит прогноз из пользовательского интерфейса.
Клонируйте репозиторий на свой компьютер, зайдите в него и откройте здесь два терминала.
В первом терминале зайдите внутрьui
использование папкиcd ui
, Убедитесь, что вы используете версию узла10.4.1
, Оказавшись внутри папки, запустите командуyarn install
установить все зависимости.
Для запуска интерфейса на сервере мы будем использоватьserve
, Мы начнем с установкиserve
глобально, опубликуйте, мы создадим наше приложение, а затем, наконец, запустим пользовательский интерфейс, используяserve
на порт 3000.
npm install -g serve
npm run build
serve -s build -l 3000
Теперь вы можете перейти кlocalhost:3000
чтобы увидеть, что пользовательский интерфейс запущен и работает. Но он не будет взаимодействовать с сервисом Flask, который все еще не работает. Итак, давайте сделаем это.
На втором терминале переместитесь внутрьservice
использование папкиcd service
, Мы начинаем с создания виртуальной среды, используяvirtualenv
и Python 3. Вы можете прочитать о virtualenvВот, Затем мы установим все необходимые зависимости с помощью pip после активации среды. Наконец, мы запустим приложение Flask.
virtualenv -p Python3 .
source bin/activate
pip install -r requirements.txt
FLASK_APP=app.py flask run
Это запустит сервис на127.0.0.1:5000
,
Вуаля! Полное приложение теперь будет работать правильно. Yaay !!
Чтобы понять процесс использования шаблона для любой модели, я буду использоватьiris
набор данных и создать модель для того же. Этот пример также доступен вexample
папка в проекте.
Я тренировалDecisionTreeClassifier
на наборе данных радужной оболочки, для которого требуется 4 функции - длина Sepal, ширина Sepal, длина лепестка и ширина лепестка. Затем я сохранил модель вclassifier.joblib
с помощьюjoblib.dump()
, Классификатор теперь можно использовать для прогнозирования новых данных.
Далее я открыл файлapp.py
в текстовом редакторе (Sublime Text - один). Я раскомментировал строкуclassifier = joblib.load(‘classifier.joblib’)
так что переменнаяclassifier
сейчас держит обученную модель.
В методе post я сделал следующие обновления:
Во-первых, я использовалclassifier.predict()
чтобы получить прогноз. Затем я создал карту для классов так, что 0 означаетIris Setosa
, 1 означаетIris Versicolour
и 2 означаетIris Virginica
, Я наконец вернул прогноз вresult
ключ.
Обновить:Как указаноМартинс УнталсЯ забыл упомянуть, что нам также необходимо обновить модель, чтобы она работала правильно и имела обновленную модель в интерфейсе Swagger.
Как видно из сути, я обновил имена полей, их типFloat
, описание и текст справки. То же самое теперь будет отражено и в Swagger
Форма состоит из столбцов внутри строк. Таким образом, поскольку у меня есть 4 функции, я добавил 2 столбца в 2 строки. В первом ряду будут выпадающие значения для Sepal Length и Sepal Width. Во втором ряду будут раскрывающиеся списки для длины лепестка и ширины лепестка.
Я начал с создания списка опций для каждого из этих выпадающих списков.
Затем я определил две строки с двумя столбцами в каждой. Каждый выпадающий список будет выглядеть как код ниже:
Для каждого выпадающего списка нам нужно будет обновить текст внутри<Form.Label></Form.Label>
, Мы также назовем каждую группу выбора. Скажем имя будетpetalLength
поэтому мы устанавливаем значение как{formData.petalLength}
и назвать как“petalLength”
, Опции добавляются с использованием названий, которые мы определили выше<Form.Control></Form.Control>
как мы можем видеть{petalLengths}
над. Две такие группы внутри<Form.Row></Form.Row>
сделает наш пользовательский интерфейс.
Состояние также должно быть обновлено с такими же именами внутриformData
со значениями по умолчанию в качестве наименьшего значения из соответствующих раскрывающихся списков. Конструктор будет выглядеть ниже. Как вы можете видеть, состояние было обновлено, чтобы иметьformData
с новыми ключами.
Внутри app.css измените ссылку фонового изображения на свою. Я добавил изображение цветов изUnsplash, Я также обновил названиеIris Plant Classifier
и заголовок страницы тоже внутриindex.html
файл вpublic
папки.
Приложение теперь готово к использованию модели. Перезапустите обе службы после создания пользовательского интерфейса.npm run build
, Приложение выглядит так:
С некоторыми значениями функций, при нажатииPredict
кнопка, модель классифицирует его какIris Setosa
,
С новыми значениями признаков модель предсказывает, что завод будетIris Versicolour
,
Как вы можете видеть, в этой статье я рассмотрел шаблон приложения ML React, который сделает создание полных приложений ML простым и быстрым.
Попробуйте приложение для собственного варианта использования и поделитесь своим мнением. Я хотел бы услышать от вас.
© www.machinelearningmastery.ru | Ссылки на оригиналы и авторов сохранены. | map