Когда он был впервые спущен на воду в 1912 году, британский пароход был самым большим кораблем в мире. Невероятный 882 фута в длину и 175 футов в высоту, Титаник был провозглашен самым дорогим, самым роскошным кораблем, когда-либо построенным. Говорили, что он «непотопляемый». 10 апреля 1912 года «Титаник» отплыл в Нью-Йорк. Через четыре дня после отплытия случилось великое бедствие: «Титаник» затонул на дне северной части Атлантического океана.
Спустя 109 лет до сих пор остаются без ответа вопросы о катастрофе «Титаника». Пока их еще предстоит найти, давайте попробуем предсказать шансы на выживание каждого пассажира, используя методы машинного обучения.
Найдите ссылку на блокнот Kaggle здесь
Подробнее о проблеме здесь
Теперь приступим к кодированию
У нас есть два набора данных
Набор данных для обучения: этот набор данных используется для обучения моделей машинного обучения (train.csv)
Тестовый набор данных: этот набор данных используется для тестирования моделей машинного обучения (test.csv)
Описание столбца
- PassengerId : уникальный идентификационный номер для каждого пассажира
- Выжил : 1-выжил и 0-умер
- Pкласс: Пассажирский класс
- Имя: Имя пассажира
- Пол: Пол пассажира
- Возраст : Возраст пассажира
- SibSp : Количество братьев и сестер/супругов
- Parch :Количество родителей/детей
- Билет: номер билета
- Стоимость : Цена билета
- Кабина : Категория кабины
- Высадка: порт, в котором пассажир прибыл (C = Шербур, Q = Квинстаун, S = Саутгемптон)
Сначала давайте загрузим и проверим оба набора данных.
После загрузки данных попробуем понять данные.
Следующим шагом будет выполнение базового анализа данных.
Мы проверим, как значения в разных столбцах влияют на значения в оставшемся столбце.
Столбцы Name и Ticket имеют много уникальных значений. Итак, предположим, что это не имеет большого значения в том, как рассчитывается выживший столбец.
Pclass против выживших
из приведенных выше данных совершенно очевидно, что пассажиры с классом билетов 1, скорее всего, выживут, в то время как пассажиры с классом билетов 3 выживут с наименьшей вероятностью
Секс против выживания
у самок больше шансов выжить, чем у самцов
СибСп против выживших
Когда SibSp равен 0,1 или 2, у пассажиров больше шансов выжить
Парч против выживших
Когда Parch равен 0,1,2 или 3, у пассажиров больше шансов выжить
Отправившиеся против выживших
Когда Embarked имеет статус C, у людей больше шансов выжить по сравнению с Q и S
После загрузки и анализа данных я следовал инструкции здесь, которая помогла мне добиться точности 0,77511.
Итак, моей целью было повысить точность с 0,77511, и после нескольких часов кодирования и 40+ версий я смог повысить точность до 0,78708.
Вот мой прогресс...
- Первым шагом было найти пропущенные значения и заполнить пропущенные значения
Здесь значения Age, Cabin и Embarked отсутствуют. Таким образом, пропущенные значения в возрасте можно заполнить средним значением, а пропущенные значения в Embarked можно заполнить C, поскольку пассажиры с Embarked C имеют самые высокие шансы выжить, а столбец Cabin можно опустить.
Это помогло мне достичь точности 0,78468.
2. Следующим шагом было получение полезной информации из всех доступных столбцов.
из анализа данных совершенно очевидно, что пассажиры с ibSp равными 0,1 или 2 и Parch равными 0,1,2 или 3 имеют больше шансов выжить. Итак, мы добавим новый столбец, чтобы проверить, одинок человек или нет (column_name = is_Alone). Предположим, что у человека без семьи больше шансов выжить, чем у человека с членами семьи.
После включения is_Alone в классификатор случайного леса точность повысилась до 0,78708.
3. Из анализа данных также стало ясно, что у людей с большим количеством членов семьи меньше шансов выжить по сравнению с людьми с меньшим количеством членов семьи.
Поэтому мы добавим новый столбец с именем «Размер», который соответствует размеру семейства, которое представляет собой сумму столбцов SibSp и Parch.
после добавления параметра размера также в случайный классификатор мы получили точность 0,77751, что выше исходной точности, но не самое лучшее.
4. Мы также попытались разделить тариф на 5 разных диапазонов и применить этот диапазон тарифов также в случайном классификаторе.
train_data['Fare_range'] = [0, если 39,688‹x‹512,329, иначе 1, если 21,679‹x‹9,688, иначе 2, если 10,5‹x‹21,679, else 4, если 7,854‹x‹10,5, иначе 4 для x в train_data['Fare'] ]
train_data.head()
test_data['Fare_range'] = [0, если 39,688‹x‹512,329 else 1, если 21,679‹x‹9,688 else 2, если 10,5x‹21,679 else 4, если 7,854‹x‹10,5 else 4 for x в test_data['Fare'] ]
test_data.head()
После включения fare_range в классификатор Random Forest мы получили точность 0,77900.
5. Мы также попытались разделить Возраст на 5 разных диапазонов и применить этот диапазон тарифов также в случайном классификаторе.
После включения fare_range в классификатор Random Forest мы получили точность 0,78229.
Мой лучший результат
Вклад
Первоначальная модель работала со всем набором данных, поэтому первым шагом было понимание данных и определение пропущенных значений, заполнение пропущенных значений и удаление ненужных столбцов. В столбцах «Возраст» и «Посадка» отсутствовали значения. Таким образом, пропущенные значения в возрасте можно заполнить средним значением, а пропущенные значения в Embarked можно заполнить C, поскольку пассажиры с Embarked C имеют самые высокие шансы выжить, а столбец Cabin можно опустить.
Потратьте часы, чтобы установить взаимосвязь между различными столбцами, и попытались создать ценную информацию из каждого столбца и применить ее к случайному классификатору, чтобы повысить точность. В блог включаются только те изменения, которые привели к большей точности по сравнению с исходной. Окончательная точность достигается после нескольких часов кодирования 40+ версий и представлений.
Попытался классифицировать функцию возраста и платы за проезд по 5 различным диапазонам, а затем включил это в классификатор случайного леса, что помогло повысить уровень точности по сравнению с первоначальным.
Справочник
https://www.kaggle.com/alexisbcook/titanic-tutorial
https://www.kaggle.com/bestesakar/titanic-eda
https://www.makeuseof.com/fill-missing-data-with-pandas/
https://www.kaggle.com/topptheeralertham/titanic-beginner-s-simple-guide-w-random-forest/notebook