Можно ли «предсказать» пассажиров, которые выжили или погибли при затоплении «Титаника» в 1912 году? Нет смысла искать ответ в Интернете!
Сложно?
Что, если я предложу некоторую информацию, полученную при посадке этих пассажиров? Вы можете предсказать?

Прежде чем ответить, давайте вспомним, что это была за крушение. 10 апреля 1912 года был открыт «Титаник», на борту которого находилось более 2200 человек, считавшийся самым роскошным и безопасным кораблем своего времени. Его первым (и последним) маршрутом было Соединенное Королевство x Нью-Йорк.

К сожалению, через 3600 километров пути, через 4 дня после выхода в море, корабль столкнулся с айсбергом и потерпел крушение.
После столкновения были спущены на воду спасательные шлюпки, и менее чем через 3 часа корабль затонул. Чуть меньше трети пассажиров на борту выжили.

Были ли выбраны выжившие в этой аварии случайным образом или был какой-то приоритет при посадке на спасательную шлюпку? Может быть, этот приоритет связан с возрастом? Секс? Класс? Салон самолета?

Платформа соревнований и соревнований Kaggle предоставляет базу данных с информацией о пассажирах Титаника. Эти данные были получены при посадке на корабль. Кроме того, платформа по-прежнему обеспечивает переменную реакцию для некоторых пассажиров и ожидает, что мы «спрогнозируем» остальных.

Давайте сделаем эту задачу!

На предыдущий вопрос ответ ДА! Мы смогли «предсказать» пассажиров, которые выжили или погибли в результате крушения. Далее я расскажу о своем подходе к теме и выделю свои гипотезы.

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

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

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

Следующим шагом будет проверка качества каждого столбца, начиная с количества недостающей информации.

В базе данных 891 пассажира / запись. Переменная Cabin содержит 77% пустых записей; переменная Возраст имеет пустые 20% записей; В переменной Embarked меньше 1% пустых записей. Следуя предположениям моделирования, мы не можем перейти к следующему этапу с отсутствующими данными, поэтому я решил исключить переменную Cabin и оставить переменные Age и Embarked, чтобы впоследствии выполнить какой-либо тип лечения.

Переменная PassengerId - это уникальный идентификатор для каждого клиента, который только помогает нам выполнить идентификацию пассажира, не принося информации модели.

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

При просмотре информации в столбце «Имя» мы заметили, что упоминаются термины «мистер», «миссис», «мисс», «мисс» и «хозяин». В поисках значения каждого термина у нас есть:

Мисс: Одинокие женщины
Миссис: Замужние женщины
Мисс: Мужчина
Хозяин.: Дети

После этой конструкции мы можем удалить столбец Имя.

Столбцы Pclass, Sex и Embarked являются размерами и не измеряются, поэтому нам нужно преобразовать их в фиктивные переменные.

Помните, что в переменной Age было 20% пустых данных? Теперь займемся лечением и заполним его. Для этого мы будем использовать среднее значение по категории, полученное с помощью переменной Name (Mrs, Mr, Master и Miss).

Как насчет того, чтобы увидеть корреляцию базовых переменных с Survived (ответная переменная)?

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

Наконец-то мы подошли к нашей модели, приступим к подготовке.

Нам нужно сообщить модели, которая является нашей целевой переменной (Y), и переменными, которые помогут в нашем прогнозе (X), затем мы сделаем разделение, которое является разделением нашей базы обучения и тестирования для оценки после результата модели. . В нашем случае мы выделили 70% для обучения модели и 30% для выполнения теста позже.

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

Наша модель обучена на данных, над которыми мы работали во время этой задачи.
Пришло время оценить, сделать прогноз и сравнить с данными, которые мы разделили (те 30% разделения, помните?).

Метрики оценки основаны на матрице путаницы, если вы забыли, я оставлю изображение, чтобы помочь

Мы сделали это !!
В нашем первом испытании мы выбрали точность 87%, а когда мы смотрим на показатель f1 (средневзвешенное значение точности и отзыва), у нас было 80% уверенности у выживших и 90% у других. -выжившие.

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

Для получения дополнительных сведений ниже приведена полная ссылка на код:
https://github.com/joonaspp/kaggle-titanic

Спасибо за внимание, увидимся в следующий раз.