Введение

Привет, Хабр! Сегодня я покажу вам основы TensorFlow(keras) на примере Heart Disease Dataset.

Данный датасет содержит в себе данные о заболевания сердца у разных людей. В качестве целевой переменной выступает значение, есть ли у людей сердечное заболевание
Подробнее о датасете: https://www.kaggle.com/datasets/mexwell/heart-disease-dataset

Для демонстрации используется сервис Google Colab (https://colab.research.google.com/)

Начало

Вначале подключим основные библиотеки

import pandas as pd
import tensorflow as tf
import matplotlib.pyplot as plt

Здесь мы подключаем библиотеку pandas, для работы с нашем датасетом, если вкратце эта библиотека позволяет нам работать с форматом csv, в котором зачастую и хранятся датасеты. Далее мы подключаем собственно библиотеку tensorflow и библиотеку matplotlib , которая понадобится нам для построения графиков.

Подготовления

Взглянем на наш датасет:

data = pd.read_csv('dataset/heart_statlog_cleveland_hungary_final.csv')
data.head()

Код покажет нам первые 4 строки нашего датасета.
Давайте разделим наш датасет на часть для обучения и часть для тестирования
Сделаем это с помощью библиотеки sklearn:

from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(data.drop('target', axis = 1), data['target'], test_size = 0.2, random_state = 0)

теперь в x_train и y_train хранятся атрибуты и целевая переменная для обучения, а в x_test и y_test для тестирования.

Построение модели

Построем нашу модель:

model = tf.keras.Sequential([
    tf.keras.layers.Dense(units=50, activation='tanh'),
    tf.keras.layers.BatchNormalization(),
    tf.keras.layers.Dense(units=25, activation='tanh'),
    tf.keras.layers.BatchNormalization(),
    tf.keras.layers.Dense(units=2, activation='softmax')
])

Здесь мы создаем модель прямого распространения Sequential, с тремя слоями Dense, и каждый со своим количеством нейронов units, а также указываем функцию активации activation
подробнее о принципе работы нейросетей можете прочитать в книги: Грокаем глубокое обучение Эндрю Траск
Также между каждым слоем мы проводим Batch нормализацию
подробнее о ней "https://habr.com/ru/articles/309302/"

Теперь установим настройки для нашей модели

model.compile(optimizer='adam', 
              loss='SparseCategoricalCrossentropy', 
              metrics=['accuracy'])

Здесь мы указываем метод оптимизации(optimizer), функцию потери(loss) и метрики, используемые для обучения
подробнее о возможных настройках можно прочитать в документации("https://www.tensorflow.org/api_docs/python/tf/keras")

Обучение модели

Теперь обучим нашу модель

history = model.fit(x_train, y_train, batch_size=25, epochs=1000, validation_split=0.2, validation_batch_size=25)

Здесь мы обучаем нашу модель и сохраняем данные об обучении в переменной history. Мы указываем здесь атрибуты и целевые переменные для обучения, размер батчей : batch_size, количество эпох: epochs, размер разделения на валидационную выборку: validation_split, а также размер валидационных батчей validation_batch_size.

Построение графиков

Построим с помощью matplotlib графики нашей модели:

plt.grid('True')
plt.plot(history.epoch, history.history['val_loss'], color = 'blue', linewidth = 2)
plt.show()
plt.plot(history.epoch, history.history['accuracy'], color = 'red', linewidth = 2)

Тестирование

В конце концов протестируем нашу модель:

test = model.evaluate(x_test, y_test)

Теперь в переменной test хранятся результаты тестирования нашей модели.

Заключение

В данной статье, я постарался описать в общих чертах работу с библиотекой Tensorflow(keras), надеюсь я смог замотивировать вас для дальнейшего изучения этой библиотеки.

Удачи!

Комментарии (2)


  1. MzMz
    13.05.2025 13:49

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


    1. Masonchiiik Автор
      13.05.2025 13:49

      хм, соглашусь, но тут он использован просто как пример, как делать нейронки на tensorflow.