По-добри данни, по-добър модел!

Преглед

Здравейте, хора,
В предишния раздел на EDA,разгледахме разпределението на различни функции. И връзката им с етикета за прогнози, Оцелели, както и помежду си.

Забелязахме, че някои от функциите като Имесъдържат допълнителна информация за заглавиетона пътника, което може да бъде полезно за нашия модел.
В този раздел, ще извлечем полезни подробности от различни функции и ще създадем нови функции. Да започваме!

Можете да намерите пълния бележник тук:



Първо, нека импортираме и комбинираме нашите тренировъчни и тестови данни, за да избегнем повтарянето на едни и същи стъпки и за двете поотделно.

Код

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

Функцията Име изглежда по следния начин:

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

Защо фамилия?

Хипотеза: Ако някои членове на семейството оцелеят, има вероятност и други да оцелеят.

Код

Нова функция: Заглавие

Всеки пътник има титла в нашата база данни (г-н/г-жа/майстори т.н.). Можем да ги извлечем и да ги добавим като нова функция Заглавие.

Нека групираме някои от тези заглавия заедно, като използваме речника по-долу:

Ето окончателния списък със заглавия, които ще използваме:

Защо Заглавие?

Разглеждайки графиката по-долу, можем да видим, че вероятността за оцеляване се променя с Title

Код

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

Ако разгледаме функцията Кабинаможем да видим, че всяка кабина започва с азбука. Това могат да бъдат секции в кабината, подобни на тези, които имаме във влакове или полети.

След като извлечем и комбинираме няколко, получаваме следния набор от секции на кабината

Код

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

В EDA открихме, че размерът на семейството играе ключова роля при определянето на оцеляването.

Нека създадем нова функция Family_Sizeкато сумираме функциите Sibspи Parch.

Код

Нова функция: Групиран размер на семейството

В тази функция ще присвоим имена на групи на пътниците въз основа на размера на семейната им група, като използваме следния код

Код

Защо групиране?

Ще използваме модели за класифициране на Boosting и Bagging Tree. Обединяването на семейни размери в групи ще помогне на нашия модел да се учи по-добре.

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

По време на EDA забелязахме, че броят на уникалните билетие 681. Това означава, че някои пътници споделят едни и същи номера на билети. Групирайки ги въз основа на броя пътници на билет, получаваме следните нива на оцеляване:

Защо групови билети?

Хипотеза: Един и същи билет ще бъде споделен между семейната група, както и между групата приятели.

Код

Age_Bin & Fare_Bin

Наблюдавахме по време на EDA, че вероятността за оцеляване варира в различните сегменти Възрасти Цена. Нека ги обединим в отделни функции.

Защо Binning?

Ще използваме модели за класифициране на Boosting и Bagging Tree. Използването на Bins ще помогне на нашия модел да се учи по-добре. Тогава ще обсъдя обосновката за използването на тези модели.

Забележка: Функциятавъзраст липсва за много пътници. Ще актуализираме техните стойности на bin в следващия раздел, където ще обработваме липсващи стойности.

Код

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

Тази функция ще съдържа вероятността за оцеляване за всеки Билет, Фамилия и Номер на кабината. Ще създадем 3 нови функции: Ticket_Survival_Rate, Cabin_Survival_Rate & Name_Survival_Rate

За всички пътници, пътуващи с Титаник, вероятността за оцеляване е около 0,38. Но тази вероятност варира в зависимост от пола, Pclass и други характеристики. Хората, пътуващи заедно, имат едни и същи номера на билети или номер на кабина.

Сега някои номера на билети, фамилия и каюти са често срещани както в данните за обучение, така и в тестовите данни. Например, да кажем, че 5 пътника споделяме един и същ билет. Сега 2 от тези билети са в тестови данни, докато другите 3 са в тренировъчни данни. Сега всички 3-ма пътници в данните за обучението са оцелели. Тогава шансовете са, че другите 2 пътника в тестовите данни също биха оцелели!

Първоначално вероятността за оцеляване на всички пътници ще бъде 0,38. След това ще актуализираме вероятността за оцеляване на всички билети, фамилия и кабина, които са често срещани във влаковите и тестовите данни.

Код

Разделяне на влак и тестови данни

Нека разделим нашите данни обратно на комплекти за обучение и тестване:

Добавихме 11 нови функции: Family_Name, Title,Cabin_Section,Family_Size,Family_Size_Grouped, Ticket_Group_Size, Age_Bins, Fare_Bins, Ticket_Survival_Rate, Cabin_Survival_Rate & Name_Survival_Rate

В следващия раздел ще обработваме липсващи стойности.

Ако имате някакви въпроси или отзиви, моля, свържете се с мен в LinkedInили Twitter.

Повече съдържание в PlainEnglish.io. Регистрирайте се за нашия безплатен седмичен бюлетин. Следвайте ни в Twitter и LinkedIn. Присъединете се към нашата общност Discord.