В настоящее время я строю свою первую модель машинного обучения, используя набор данных titani c. После исследования данных я решил сосредоточить свое внимание на функции «Билет». Одна вещь, которую я заметил об этой функции, это то, что она не уникальна для каждого пассажира; это привело меня к мысли, что из этой переменной можно извлечь другие функции:
- Is_Group ->, чтобы указать, представляет ли билет групповое бронирование
- Group_Size -> количество пассажиров в каждой группе.
# save the tickets that appear more than once (i.e. group tickets)
_ = (data.Ticket.value_counts()>1).to_dict()
ls = []
for key in _:
if _[key]==True:
ls.append(key)
#extract the feature
data['Is_Group'] = data['Ticket'].apply(lambda x: 1 if x in(ls) else 0)
# create another dict containing the number of counts per each ticket
group_size = (data.Ticket.value_counts()).to_dict()
# extract the feature from the mapping
data['Group_Size'] = data['Ticket'].map(group_size).fillna(0)
Причина, по которой я это делаю, заключается в том, что я хотел изучить природу взаимосвязи между извлеченными функциями из Ticket и целью Survived (а позже решил, как поступить с выбросами в функции SibSp и Parch):
data.groupby(['Is_Group','Group_Size'])['Survived'].describe()
Ссылка на df:
Из приведенной таблицы видно, что размер группы 2 / 3 имеет почти 60% и 70% шанс на выживание. Теперь это привело меня к мысли, что существует корреляция (или, по крайней мере, какая-то связь между размером группы и выжившим). Поэтому я решил создать корреляционную матрицу, чтобы убедиться в этом.
ссылка на df:
Как я и ожидал, существует корреляция между Is_Group и Group_Size (поскольку они были извлечены из одной и той же функции), но между этими извлеченными функциями и Survived нет корреляции . Отсюда и моя путаница. Я подумал, что учитывая высокие средние значения Survived для Group_Size (2,3), была связь, но ясно, что я что-то здесь не так делаю.
Может кто-нибудь помочь избавиться от моих сомнений?