Введение
Привет, Хабр! Сегодня я покажу вам основы 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), надеюсь я смог замотивировать вас для дальнейшего изучения этой библиотеки.
Удачи!
MzMz
там в датасете всего чуть больше тысячи сэмплов и дюжина фич, пожалуй, для такого примененение нейронок - это слишком
Masonchiiik Автор
хм, соглашусь, но тут он использован просто как пример, как делать нейронки на tensorflow.