Лучшие данные, лучшая модель!

Обзор

Привет, ребята!
В предыдущем разделе EDA мы рассмотрели распределение различных функций. И их взаимосвязь с меткой прогноза Выжил, а также друг с другом.

Мы заметили, что некоторые функции, такие как Имя, содержат дополнительную информацию о названии пассажира, которая может быть полезна для нашей модели.
В этом разделе мы будем извлекать полезные детали из различных функций и создавать новые функции. Давайте начнем!

Полный блокнот можно найти здесь:



Во-первых, давайте импортируем и объединим наши данные обучения и тестирования, чтобы не повторять одни и те же шаги для обоих по отдельности.

Код

Новая функция: фамилия

Функция Имя выглядит примерно так:

Фамилия, за которой следует остальная часть имени. Мы можем получить имя семейства и добавить его как новый признак.

Почему Фамилия?

Гипотеза. Если некоторые члены семьи выживут, то, скорее всего, выживут и другие.

Код

Новая функция: название

У каждого пассажира есть титул в нашей базе данных (господин/госпожа/хозяин и т. д.). Мы можем извлечь их и добавить в качестве новой функции Название.

Давайте сгруппируем некоторые из этих заголовков вместе, используя приведенный ниже словарь:

Вот окончательный список названий, которые мы будем использовать:

Почему титул?

Глядя на приведенный ниже график, мы видим, что вероятность выживания меняется в зависимости от титула.

Код

Новая функция: секция кабины

Если мы посмотрим на функцию Каюта, то увидим, что каждая каюта начинается с алфавита. Это могут быть секции салона, подобные тем, что есть в поездах или самолетах.

После извлечения и объединения нескольких мы получаем следующий набор Секций салона.

Код

Новая функция: размер семьи

В EDA мы обнаружили, что размер семьи играет ключевую роль в определении выживания.

Давайте создадим новую функцию Family_Size, суммировав функции Sibsp и Parch.

Код

Новая функция: группировка по размеру семьи

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

Код

Почему группировка?

Для классификации мы будем использовать модели на основе Boosting and Bagging Tree. Объединение размеров семьи в группы поможет нашей модели лучше учиться.

Новая функция: групповой билет

Во время EDA мы заметили, что количество уникальных билетов составляет 681. Это означает, что некоторые пассажиры используют одни и те же номера билетов. Сгруппировав их по количеству пассажиров на билет, мы получим следующие показатели выживаемости:

Почему групповые билеты?

Гипотеза. Один и тот же билет будет использоваться как семейной группой, так и группой друзей.

Код

Age_Bin и Fare_Bin

Во время EDA мы заметили, что вероятность выживания варьировалась в зависимости от сегментов Возрасти Тариф. Давайте объединим их в отдельные функции.

Почему Биннинг?

Для классификации мы будем использовать модели на основе Boosting and Bagging Tree. Использование бинов поможет нашей модели лучше учиться. Затем я буду обсуждать обоснование использования этих моделей.

Примечание. У многих пассажиров функция возраст отсутствует. Мы будем обновлять их значения корзины в следующем разделе, где мы будем обрабатывать отсутствующие значения.

Код

Новая функция: показатели выживания

Эта функция будет содержать вероятность выживания для каждого билета, фамилии и номера каюты. Мы создадим 3 новые функции: Ticket_Survival_Rate, Cabin_Survival_Rate и Name_Survival_Rate

Для всех пассажиров, путешествующих на Титанике, вероятность выживания составляет около 0,38. Но эта вероятность варьируется в зависимости от пола, P-класса и других характеристик. Люди, путешествующие вместе, имеют одинаковые номера билетов или номеров кают.

Теперь некоторые номера билетов, фамилия и каюты являются общими как в обучающих, так и в тестовых данных. Например, предположим, что 5 пассажиров пользуются одним и тем же билетом. Теперь 2 из этих билетов находятся в тестовых данных, а остальные 3 — в обучающих данных. Теперь все 3 пассажира из тренировочных данных выжили. Тогда есть вероятность, что другие 2 пассажира в тестовых данных тоже выжили бы!

Изначально вероятность выживания всех пассажиров будет равна 0,38. Затем мы обновим вероятность выживания всех билетов, фамилий и кают, которые являются общими как для поездов, так и для тестовых данных.

Код

Разделить данные поезда и теста

Давайте снова разделим наши данные на наборы для обучения и тестирования:

Мы добавили 11 новых функций: Семейное_Имя, Название,Секция_Кабины,Семейный_Размер,Семейный_Размер_Групповой, Билет_Групповой_Размер, >Age_Bins, Fare_Bins, Ticket_Survival_Rate, Cabin_Survival_Rate и Name_Survival_Rate

В следующем разделе мы будем обрабатывать пропущенные значения.

Если у вас есть какие-либо вопросы или отзывы, свяжитесь со мной в LinkedInили Twitter.

Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter и LinkedIn. Присоединяйтесь к нашему сообществу Discord.