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

Это подводит меня к этой статье. Здесь я проведу вас через модель, которая дает вероятную оценку заболевания на основе трех введенных симптомов. Я обучил эту модель с помощью классификатора случайного леса, который затем связал с фреймворком Flask.

Итак, приступим!

Модель

Данные, полученные из набора данных, были довольно чистыми и уже были отсортированы в файлы csv для обучения и тестирования.

train = pd.read_csv("training_data.csv",error_bad_lines = False)
test = pd.read_csv("test_data.csv",error_bad_lines = False)

В наборе данных было 132 симптома, связанных с 41 заболеванием.

Затем я приступил к разделению данных на x и y.

y_test = test.prognosis
x_test = test.drop('prognosis',axis = 1)

Визуализация

Чтобы визуализировать данные, с которыми мы имеем дело, я решил построить простой график подсчета.

f,ax = plt.subplots(figsize=(75,16))
sns.countplot(y_train,label="Count",ax = ax)

О наблюдении за данными. Я пришел к выводу, что никакой нормализации не требуется, поскольку значения распределяются равномерно.

Модельное обучение

Это казалось довольно простой проблемой классификации, поэтому я использовал алгоритм случайной классификации леса для обучения и тестирования моей модели.

clf_rf = RandomForestClassifier(random_state=43)      
clr_rf = clf_rf.fit(x_train,y_train)

Точность

ac = accuracy_score(y_test,clf_rf.predict(x_test))

Модель дает нам точность 97,62%.

Однако, прежде чем мы продолжим, нам остается сделать еще один важный шаг. Чтобы связать модель с Flask, вы должны сначала записать ее в файл pickle, который затем прочитает приложение Flask.

К счастью для нас, все, что нам нужно сделать, это импортировать библиотеку pickle и использовать функцию дампа для записи в файл.

pickle.dump(clr_rf,open('model.pkl','wb'))

На этом вы закончили с первым разделом!

Колба

Flask - один из самых популярных фреймворков, который, честно говоря, довольно легко реализовать. Что ж, если вы не знаете, что такое фреймворк, это не что иное, как библиотека кода, которая упрощает жизнь разработчика при создании надежных, масштабируемых и обслуживаемых веб-приложений, предоставляя повторно используемый код или расширения для общих операций.

Теперь, когда мы рассмотрели основное определение, давайте приступим к созданию этой структуры. Сначала давайте убедимся, что мы читаем данные, хранящиеся в файле pickle, чтобы мы могли получить к ним доступ и здесь.

model = pickle.load(open('model.pkl', 'rb'))

Маршрутизация

Теперь давайте обратим наше внимание на @ app.route (). Здесь я буду использовать его дважды. Первый для возврата моей HTML-страницы, а второй для возврата значения точности.

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

if request.method == 'POST':
    col = x_test.columns
    inputt = [str(x) for x in request.form.values()]
    b = [0]*132
    for x in range(0, 132):
        for y in inputt:
            if (col[x] == y):
                b[x] = 1

Не забудьте добавить это последнее условие, чтобы ваше приложение работало бесперебойно.

На этом вы закончили со второй частью!

HTML

Это, безусловно, самый простой из трех. Теперь все, что вам осталось сделать, это разработать HTML-страницу, чтобы улучшить взаимодействие с пользователем. Если у вас нет предварительных знаний HTML, вы можете просто выбрать один из множества шаблонов и немного его настроить.

1-я настройка

Это должно быть сделано там, где вы хотите, чтобы ваш отчет о точности отображался.

Если вы помните, во втором операторе маршрутизации мы присвоили этой переменной прогнозируемое значение, а затем вернули его. Затем это значение вызывается и отображается в вашем HTML.

2-я настройка

Убедитесь, что у вас есть форма с действием, определенным как предсказать, а метод - как публикация. Это поможет вам прочитать ваши значения, которые пользователь вводит в HTML, а затем отправить их в ваше приложение Flask.

Таким образом, вы выполнили все три шага и сможете успешно связать приложение Flask с моделью машинного обучения.

Так получилось у меня 🍕

Все коды доступны на моем гитхабе.

https://github.com/PotatoinPyjamas/Disease-Prediction

Если вам понравилась статья, не стесняйтесь показывать ❤.