Привет выродки ..! Сегодня я собираюсь поговорить о простом примере машинного обучения, который предскажет, есть ли у человека диабет или нет (нужно ли давать некоторую информацию, чтобы предсказать, есть ли у нас диабет?). Конечно, да, вам нужно предоставить некоторую информацию, чтобы предсказать прогноз. Или еще как мы узнаем, есть у человека диабет или нет.

Итак, я предполагаю, что вы слышали о названии технологии под названием нейронная сеть. Если нет, позвольте мне немного рассказать о нейронных сетях (если вы знакомы с этим ключевым словом, не стесняйтесь пропустить абзац ниже).

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

Поскольку теперь у вас есть небольшое представление о нейронных сетях, давайте перейдем к основной теме моей статьи.

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

Итак, давайте разберемся с проблемой в соответствии с тем, как мы определили выше.

Цель - прогнозировать диабет.

Ресурсы - набор данных, содержащий данные о диабете.

Хорошо…

Теперь мы определили нашу цель и ресурсы. Но каков наш набор данных?

Мы используем известное название набора данных Набор данных о диабете индейцев пима. Снимок нескольких строк набора данных приведен ниже в этой статье.

В нейронных сетях нам нужно передать некоторые данные в сеть для обучения. Наша нейронная сеть изучает шаблон из заданного набора данных и предсказывает заданную функцию. В наборе данных прима-индейцев вы можете видеть 9 столбцов. 9-й столбец (Результат) - это столбец, в котором указывается, болен ли человек диабетом или нет. Результат представлен в виде двоичного значения. Если значение равно 1, это означает, что у определенного человека диабет, и наоборот. Нам нужны данные от 1 до 8 столбцов, чтобы предсказать данные 9-го столбца. 1–8 столбцов называются входными переменными, а 9-й столбец - выходной переменной.

Сначала загрузите набор данных и загрузите его в свой текстовый редактор. Используя pandas, я загружаю свой набор данных в текстовый редактор.

Теперь мы загрузили наш набор данных в фрейм данных pandas (Dataframe - это причудливое имя, данное объекту pandas, который используется для сохранения и представления табличных данных, которые представляют собой строки и столбцы). Когда вы запустите приведенный выше код, вы получите результат ниже.

Лучше всего, когда я использую набор данных, первое, что я делаю, это проверяю, есть ли в нашем наборе отсутствующие значения. Потому что, если есть какие-либо пропущенные значения (значения NULL, NaN, NA), это повлияет на наш код прогнозирования позже. По этой причине я лично проверяю отсутствие значения в наборе данных, набрав строку ниже.

dataset.isna().sum() # this will give the sum of missing value rows

Мы видим, что в нашем наборе данных нет пропущенных значений. Да, теперь мы готовы идти. Теперь давайте разделим наш набор данных на входные и выходные переменные.

Прежде чем мы разделим данные, мы берем наш набор данных в массив numpy, а затем разделяем набор данных.

inputVariables показан ниже

outputVariables показан ниже

Теперь давайте создадим модаааал…

Построение нейронной сети осуществляется с использованием библиотеки keras.

В приведенном выше фрагменте кода мы разработали нейронную сеть. Но мы еще не тренировались. Мы просто строим простой чертеж нейронной сети, который еще предстоит настроить и обучить. Позвольте мне объяснить, что на самом деле означает приведенный выше код.

Как мы все знаем, нейронная сеть - это набор нейронов, а нейронная сеть состоит из слоев. На изображении ниже изображена простая нейронная сеть с одним скрытым слоем.

На диаграмме ниже изображена архитектура нашей нейронной сети, которую мы только что построили.

Вначале создаем последовательную модель.

model = sequential()

Затем мы добавляем слой за слоем к нашей последовательной модели, пока не будем довольны нашей моделью. В этом блоге я добавил только 3 слоя, исключая входной слой. Когда мы определяем наш первый слой, мы определяем размеры нашего ввода. Всегда помните, что последний добавляемый слой определяет наш выходной слой.

model.add(Dense()) X 3 times

Теперь мы построили архитектуру нашей модели. Затем нам нужно настроить модель для обучения, а затем мы обучаем сеть.

Когда вы запустите приведенный выше код, ваша сеть обучит набор данных в соответствии с нашей нейронной сетью. Когда я подхожу к сети, я предоставил обучающие данные (inputVariables), целевые данные (outputVariables), эпохи и размер пакета. Наша сеть обучает модель для заданного количества эпох (итераций в наборе данных).

Размер пакета означает количество образцов, которые передаются в сеть за раз. Представьте, что наш набор данных содержит 30 строк данных, и мы определяем batch_size как 3. Затем в самом начале 1-я, 2-я, 3-я строки передаются в сеть, а затем 4-я, 5-я и 6-я строки передаются в сеть. Точно так же весь набор данных подается в сеть за одну эпоху. Затем такой же процесс происходит для определенного количества эпох.

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

На снимке экрана ниже показана точность разработанной нами модели.

Полный код показан ниже…