Python | Titanic Data EDA с использованием Seaborn
Что такое EDA?
Исследовательский анализ данных (EDA) - это метод, используемый для анализа и обобщения наборов данных. Большинство методов EDA включают использование графиков.
Набор данных Titanic -
Это один из самых популярных наборов данных, используемых для понимания основ машинного обучения. Он содержит информацию обо всех пассажирах на борту RMS Titanic, который, к сожалению, потерпел кораблекрушение. Этот набор данных можно использовать, чтобы предсказать, выжил ли данный пассажир или нет.
Файл csv можно скачать с Kaggle.
#importing pandas library import pandas as pd #loading data titanic = pd.read_csv( '...input rain.csv' ) |
Сиборн:
Это библиотека Python, используемая для статистической визуализации данных. Seaborn, созданный на основе Matplotlib, обеспечивает лучший интерфейс и простоту использования. Его можно установить с помощью следующей команды,
pip3 install seaborn
Код: Печать заголовка данных
# View first five rows of the dataset titanic.head() |
Выход :
Код: проверка значений NULL
titanic.isnull(). sum () |
Выход :
Столбцы с нулевыми значениями: Возраст, Кабина, Посадка. Позже их необходимо заполнить соответствующими значениями.
Особенности: Набор данных titanic имеет примерно следующие типы функций:
- Категориальные / номинальные : переменные, которые можно разделить на несколько категорий, но не имеют порядка или приоритета.
Например. Посадка на судно (C = Шербур; Q = Квинстаун; S = Саутгемптон) - Двоичный : подтип категориальных функций, в котором переменная имеет только две категории.
Например: Пол (мужской / женский) - Порядковый : они похожи на категориальные признаки, но имеют порядок (т. Е. Могут быть отсортированы).
Например. Pкласс (1, 2, 3) - Непрерывный : они могут принимать любое значение между минимальным и максимальным значениями в столбце.
Например. Возраст, стоимость проезда - Count: Они представляют собой подсчет переменной.
Например. СибСп, Перчин - Бесполезно : они не влияют на конечный результат модели машинного обучения. Здесь PassengerId, Name, Cabin и Ticket могут попадать в эту категорию.
Код: графический анализ
import seaborn as sns import matplotlib.pyplot as plt # Countplot sns.catplot(x = "Sex" , hue = "Survived" , kind = "count" , data = titanic) |
Выход :
Просто наблюдая за графиком, можно приблизительно определить, что выживаемость мужчин составляет около 20%, а выживаемость женщин - около 75% . Таким образом, от того, является ли пассажир мужчиной или женщиной, играет важную роль в определении того, выживет ли он.
Код: Pclass (порядковый номер) vs выживший
# Group the dataset by Pclass and Survived and then unstack them group = titanic.groupby([ 'Pclass' , 'Survived' ]) pclass_survived = group.size().unstack() # Heatmap - Color encoded 2D representation of data. sns.heatmap(pclass_survived, annot = True , fmt = "d" ) |
Выход:
Это помогает определить, была ли выживаемость у пассажиров более высокого класса выше, чем у пассажиров более низкого класса, или наоборот. Пассажиры класса 1 имеют более высокий шанс на выживание по сравнению с пассажирами классов 2 и 3 . Это означает, что Pclass значительно увеличивает выживаемость пассажиров.
Код: возраст (непрерывная функция) vs выжившие
# Violinplot Displays distribution of data # across all levels of a category. sns.violinplot(x = "Sex" , y = "Age" , hue = "Survived" , data = titanic, split = True ) |
Выход :
Этот график дает сводную информацию о возрастном диапазоне мужчин, женщин и детей, которые были спасены. Выживаемость -
- Подходит для детей.
- Высокий для женщин в возрасте 20-50 лет.
- Для мужчин меньше с возрастом.
Поскольку столбец «Возраст» важен, пропущенные значения необходимо заполнить либо с помощью столбца «Имя» (определение возраста на основе приветствия - г-н, г-жа и т. Д.), Либо с помощью регрессора.
После этого шага можно создать еще один столбец - Age_Range (на основе столбца возраста), и данные можно будет снова проанализировать.
Код: факторный график для Family_Size (функция подсчета) и Family Size.
# Adding a column Family_Size titanic[ 'Family_Size' ] = 0 titanic[ 'Family_Size' ] = titanic[ 'Parch' ] + titanic[ 'SibSp' ] # Adding a column Alone titanic[ 'Alone' ] = 0 titanic.loc[titanic.Family_Size = = 0 , 'Alone' ] = 1 # Factorplot for Family_Size sns.factorplot(x = 'Family_Size' , y = 'Survived' , data = titanic) # Factorplot for Alone sns.factorplot(x = 'Alone' , y = 'Survived' , data = titanic) |
Family_Size обозначает количество человек в семье пассажира. Он рассчитывается путем суммирования столбцов SibSp и высушивать соответствующего пассажира. Кроме того, добавлен еще один столбец « Один», чтобы проверить шансы на выживание пассажира-одиночки по сравнению с пассажиром с семьей.
Важные наблюдения -
- Если пассажир один, выживаемость меньше.
- Если размер семьи больше 5, шансы на выживание значительно снижаются.
Код: штриховая диаграмма для тарифа (непрерывная функция)
# Divide Fare into 4 bins titanic[ 'Fare_Range' ] = pd.qcut(titanic[ 'Fare' ], 4 ) # Barplot - Shows approximate values based # on the height of bars. sns.barplot(x = 'Fare_Range' , y = 'Survived' , data = titanic) |
Выход :
Тариф - это тариф, оплачиваемый пассажиром. Поскольку значения в этом столбце являются непрерывными, их необходимо поместить в отдельные ячейки (как это сделано для функции «Возраст» ), чтобы получить четкое представление. Можно сделать вывод, что если пассажир заплатил более высокую стоимость проезда, выживаемость выше.
Код: графики категориального подсчета для начального объекта
# Countplot sns.catplot(x = 'Embarked' , hue = 'Survived' , kind = 'count' , col = 'Pclass' , data = titanic) |
Некоторые примечательные наблюдения:
- Большинство пассажиров сели из S. Итак, недостающие значения можно заполнить буквой S.
- Большинство пассажиров класса 3 высаживаются из Q.
- S выглядит удачливым для пассажиров классов 1 и 2 по сравнению с классом 3.
Заключение :
- Столбцы, которые можно удалить:
- PassengerId, Name, Ticket, Cabin: это строки, их нельзя разделить на категории, и они не влияют на результат.
- Возраст, стоимость проезда: вместо этого сохраняются соответствующие столбцы диапазона.
- Огромные данные могут быть проанализированы с использованием гораздо большего количества графических методов, а также большего количества корреляций столбцов, чем описано в этой статье.
- После завершения EDA полученный набор данных можно использовать для прогнозов.
Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.
Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.