Вы были потрясены первым курсом Coursera по глубокому обучению Эндрю Нг, возможно, даже проглотили его за неделю. Мы все были! Но удерживайте свои нетерпеливые пальцы от перехода на второй курс, прежде чем применять полученные знания к новому набору данных.

В этом посте рассматривается применение нейронной сети к набору данных Titanic Survival от kaggle. Это помогает читателю углубить понимание нейронных сетей вместо того, чтобы просто выполнять тщательно подобранный код Эндрю Нг. Набор данных Titanic Survival действительно служит лишь примером. Не стесняйтесь использовать любой другой набор данных двоичной классификации, который вам нравится!

Код находится в репозитории Github здесь. А теперь давайте погрузимся в веселье.

  1. Загрузите файлы «Приложение глубокой нейронной сети» и «dnn_utils_v2.py» из хаба Coursera и сохраните их локально
  • Репозиторий Github не содержит кода, предоставленного deeplearning.ai. Запишитесь на курс 1 специализации Coursera Deep Learning Specialization. Необходимый материал находится в заданиях по программированию с 4 недели.

2. Загрузите Набор данных Titanic Survival из kaggle и сохраните его там же, где и ваши записные книжки, в папке datasets

  • Для удобства я уже включил наборы данных в репозиторий Github.

3. Откройте записную книжку «Приложение для глубокой нейронной сети».

  • Вы можете безопасно удалить все остальные ячейки, кроме ячеек импорта и L-Layer_model.
  • Запускаем обе ячейки

4. Загрузите набор данных Titanic Survival

5. Предварительная обработка набора данных

  • Вмененный возраст пассажиров на основе класса - идея любезно предоставлена ​​настоятельно рекомендованным курсом Удеми Хосе Портильи Python для учебного курса по науке о данных и машинному обучению, подразделу логистической регрессии.
  • Извлечение названий пассажиров из имён - я следил за отличной и простой публикацией Мануэля об извлечении названий из имён, спасибо, что поделились!
  • Отбросьте столбцы "Идентификатор пассажира", "Кабина" и "Имя".
  • Манекен кодирует категориальные переменные "пол", "высадка" и "титул".
  • Масштабирование возраста и стоимости - масштабирование функций помогает алгоритму градиентного спуска быстрее сходиться, см. Документацию scikit-learn или репозиторий Github.

Предварительно обработанные данные теперь выглядят так:

6. Примените свою нейронную сеть

Получите переменные X и y и транспонируйте их в соответствии с архитектурой нейронной сети.

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

Предварительно обработайте тестовые данные. Создавайте прогнозы путем прямого распространения с X и параметрами, полученными при обучении нейронной сети.

И вуаля! Вы сгенерировали прогнозы, сохранили их как файл csv, и теперь вы готовы отправить файл в kaggle. Согласно этому прогнозу вы попадете в число 30% лучших участников.

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

Теперь я призываю вас поиграть с количеством итераций и слоев в сети. Можете ли вы улучшить результат? Что вы сделали иначе?

Является ли применение нейронной сети к набору данных Titanic Survival излишним? Наверное.

Регуляризована и оптимизирована ли сеть? Еще нет. После завершения курса 2 у нас могут появиться инструменты для настройки нашей нейронной сети и улучшения результатов.

Ключевые выводы:

  • Загрузите записные книжки jupyter «Прикладное глубокое обучение» и «dnn_utils_v2» из хаба Coursera и запустите их в своей локальной среде.
  • Соответствующим образом обработайте ваши данные
  • Переставьте переменные X и y, чтобы получить обучающую матрицу «функции на примерах».
  • Отрегулируйте размер первого слоя, чтобы он соответствовал вашему количеству функций
  • Обучите нейронную сеть и сохраните сгенерированные параметры
  • Создавайте прогнозы на тестовом наборе путем прямого распространения ваших тестовых данных и ранее сохраненных параметров нейронной сети.

Спасибо, что прочитали пост. Не стесняйтесь обращаться через LinkedIn, оставлять вопросы в комментариях или подписываться на меня, чтобы быть в курсе моих знаний на пути к получению специализации Coursera Deep Learning.