Нейронные сети C#. Нормализация и масштабирование данных. Обучение по Dataset.

YOUTUBE · 19.11.2025 09:19

Ключевые темы и таймкоды

Введение и цели курса

0:07
  • Курс посвящен разработке нейронной сети на языке программирования C#.
  • Практический интенсив с минимальным количеством теории.
  • Основное внимание уделяется практическому процессу разработки.

Нормализация и масштабирование

1:08
  • Рассматриваются понятия нормализации и масштабирования.
  • Эти подходы корректируют входные данные.
  • Будут реализованы два алгоритма с разными результатами.

Призыв к подписке и поддержке

2:05
  • Призыв подписаться на канал и включить уведомления.
  • Рекомендация поставить лайк и посетить группу ВКонтакте и телеграм-канал.

Ссылка на датасет

2:59
  • В описании под видео есть ссылка на датасет "Болезни сердца".
  • Второй датасет будет использован завтра.

Начало занятия

3:48
  • Начало занятия с рисования схемы.
  • Призыв задавать вопросы в комментариях.

Нормализация и масштабирование

4:47
  • Нормализация приводит значения к единообразному виду.
  • Масштабирование приводит значения к отрезку от 0 до 1.

Реализация нормализации и масштабирования

9:52
  • Нормализация выстраивается относительно нуля.
  • Масштабирование выполняется на отрезок от 0 до 1.

Примеры нормализации

11:00
  • Пример с данными от обучающего датасета.
  • Нормализация выполняется относительно среднего значения.

Применение нормализации

12:32
  • Нормализация применима к разным типам данных.
  • Преобразование значений для соответствия датасету.

Заключение

14:58
  • Нормализация требует сопоставления букв и цифр.
  • Пример с ASCII-кодом для сопоставления.

Нормализация входов

15:19
  • Для нормализации входов нужны формулы.
  • Вычисляется среднее значение признака по всем входам.
  • Используется счетчик по номерам входов и значениям.

Формула среднего значения

16:18
  • Среднее значение вычисляется по формуле: 1 / n * sum i = 0 to n.
  • Пример: если на вход поступает 578 значений, среднее будет около 10000.

Формула стандартного отклонения

18:57
  • Стандартное отклонение вычисляется по формуле: sqrt 1 / n * sum i = 0 to n * x_i - mean_i^2.
  • Пример: стандартное отклонение для нейрона равно sqrt 1 / n * sum i = 0 to n * x_i - 10000^2.

Вычисление нового значения нейрона

20:50
  • Новое значение нейрона вычисляется как x_i - mean_i / std_dev_i.
  • Пример: 10000 преобразуется в 0.0001, -1000 преобразуется в -0.05.

Масштабирование

25:41
  • Масштабирование выполняется на отрезке от 0 до 1.
  • Вычисляются минимальное и максимальное значения для столбца.
  • Новое значение сигнала вычисляется как x_i - min_i / max_i - min_i.

Программирование

27:06
  • Входные параметры приводятся к единообразному формату.
  • Минимальное и максимальное значения вычисляются для всех значений одного столбца.
  • Новое значение сигнала вычисляется как x_i - min_i / max_i - min_i.

Заключение

31:54
  • Масштабирование позволяет значениям принимать значения от 0 до 1.
  • Вопросы и обсуждение приветствуются.
  • Переход к написанию кода.

Введение и подготовка

32:52
  • Открытие проекта и ссылка на репозиторий на GitHub.
  • Ссылка на датасет для обучения.
  • Начало разработки методов нормализации и масштабирования.

Описание датасета

34:44
  • Описание двумерных массивов на входе и выходе.
  • Описание столбцов датасета: возраст, пол, медицинские параметры.
  • Описание таргета как результата, который должна предсказать нейронная сеть.

Подготовка данных

37:38
  • Датасет в виде CSV можно выгрузить из базы данных.
  • Описание ожидаемого результата и входных данных.
  • Подготовка данных для обучения нейронной сети.

Масштабирование данных

41:06
  • Масштабирование входных данных с помощью Skeleton.
  • Регистрация на Kaggle для скачивания датасетов.
  • Описание одномерного массива входных сигналов.

Алгоритм масштабирования

43:08
  • Перебор входных сигналов и вычисление минимального и максимального значений.
  • Реализация формулы масштабирования: деление на максимум минус минимум.
  • Улучшение алгоритма для оптимизации вычислений.

Алгоритм нормализации

53:39
  • Реализация алгоритма нормализации с использованием трех вложенных циклов.
  • Вычисление среднего значения, стандартного отклонения и новых значений.
  • Подстановка значений для вычисления новых значений.

Вычисление среднего значения

56:35
  • Вычисление среднего значения сигнала нейрона.
  • Использование цикла для вычисления среднего значения.
  • Применение формулы для вычисления среднего значения.

Вычисление стандартного отклонения

58:46
  • Вычисление стандартного отклонения сигнала нейрона.
  • Использование формулы для вычисления стандартного отклонения.
  • Применение переменной для подсчета ошибки.

Вычисление выходного элемента

1:02:04
  • Вычисление значения выходного элемента.
  • Использование стандартного отклонения и среднего значения.
  • Применение формулы для вычисления выходного элемента.

Перезапись метода learn

1:04:21
  • Перезапись метода learn для работы с массивами.
  • Использование двумерного массива для хранения данных.
  • Применение цикла для обработки данных.

Тестирование метода learn

1:12:48
  • Тестирование метода learn с новыми данными.
  • Проверка корректности передачи данных.
  • Исправление ошибок и тестирование метода.

Работа с датасетом

1:26:20
  • Чтение данных из файла и их корректное распарсивание.
  • Использование стрима для чтения данных.
  • Преобразование данных в массив даблов.

Подготовка данных для обучения

1:35:44
  • Подготовка данных для обучения нейронной сети.
  • Проверка корректности данных и их конвертации.
  • Добавление данных в массив для обучения.

Топология и обучаемость

1:42:29
  • Входные сигналы будут по количеству выходов.
  • Выходной сигнал будет один.
  • Количество нейронов на втором слое будет в половину меньше.

Преобразование данных

1:43:26
  • Преобразование данных в одномерный массив.
  • Рваный массив получается при преобразовании.
  • Стандартных решений для преобразования нет.

Конвертация данных

1:45:27
  • Необходим цикл для конвертации.
  • Импульс ноль, точка вн.
  • Присвоение значений и проверка размеров.

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

1:48:01
  • Тестирование двумерного массива.
  • Использование датасета для диагностики заболеваний сердца.
  • Планируется распознавание изображений.

Работа в IT и обучение

1:49:49
  • Сложно устроиться на работу программистом в 33 года.
  • Обучение программированию требует много времени и усилий.
  • Примеры блогеров, ушедших из программирования.

Проверка нейронной сети

1:51:14
  • Проверка работы нейронной сети.
  • Использование импульса и ты.
  • Обучение сети на C#, JAVA и Python.

Обучение сети

1:53:59
  • Запуск обучения сети.
  • Ожидание завершения обучения.
  • Нормализация сигналов при обучении.

Нормализация сигналов

1:57:42
  • Нормализация входных сигналов.
  • Сохранение значений для нормализации.
  • Использование нормализованных сигналов для корректной работы сети.