Kaggle实战(一)生死还难预测37

Kaggle实战(泰坦尼克号海难生死预测)

1、背景介绍

泰坦尼克号于1909年3月31日在爱尔兰动工建造,1911年5月31日下水,次年4月2日完工试航。她是当时世界上体积最庞大、内部设施最豪华的客运轮船,有“永不沉没”的美誉。然而讽刺的是,泰坦尼克号首航便遭遇厄运:1912年4月10日她从英国南安普顿出发,途径法国瑟堡和爱尔兰昆士敦,驶向美国纽约。在14日晚23时40分左右,泰坦尼克号与一座冰山相撞,导致船体裂缝进水。次日凌晨2时20分左右,泰坦尼克号断为两截后沉入大西洋,其搭载的2224名船员及乘客,在本次海难中逾1500人丧生。

在学习机器学习相关项目时,Titanic生存率预测项目也通常是入门练习的经典案例。Kaggle平台为我们提供了一个竞赛案例“Titanic: Machine Learning from Disaster”,在该案例中,我们将探究什么样的人在此次海难中幸存的几率更高,并通过构建预测模型来预测乘客生存率。

本项目通过数据可视化理解数据,并利用特征工程等方法挖掘更多有价值的特征,然后利用同组效应找出共性较强的群体并对其数据进行修正,在选择模型时分别比较了Gradient Boosting Classifier、Logistic Regression等多种方法,最终利用Gradient Boosting Classifier对乘客的生存率进行预测。

2、加载数据

#导入相关包
import warnings 
warnings.filterwarnings('ignore')
import numpy as np
import pandas as pd
import seaborn as sns
#设置sns样式
sns.set(style='white',context='notebook',palette='muted')
import matplotlib.pyplot as plt
#导入数据
train=pd.read_csv('./train.csv')
test=pd.read_csv('./test.csv')
display(train.head())
PassengerId Survived Pclass Name Sex Age
乘客编号 是否生还 用户阶级 姓名 性别 年龄
SibSp Parch Ticket Fare Cabin Embarked
兄弟姐妹配偶数 家长孩子数 船票号 乘客花费 船舱 港口
  • Survived 是否存活(label)
    • 0 - 用户死亡;
    • 1- 用户存活;
  • Pclass(用户阶级)
    • 1 - 1st class,高等用户;
    • 2 - 2nd class,中等用户;
    • 3 - 3rd class,低等用户;
  • SibSp:描述了泰坦尼克号上与乘客同行的兄弟姐妹(Siblings)和配偶(Spouse)数目;

  • Parch:描述了泰坦尼克号上与乘客同行的家长(Parents)和孩子(Children)数目;

  • Cabin(船舱):描述用户所住的船舱编号。由两部分组成,仓位号和房间编号,如C88中,C和88分别对应C仓位和88号房间;

  • Embarked(港口)

    描述乘客上船时的港口,包含三种类型:

    • S:Southampton(南安普顿,英国);
    • C:Cherbourg(瑟堡,法国);
    • Q:Queenstown(昆士敦,英国);

3、数据探索

3.1、查看数据整体情况
#分别查看实验数据集和预测数据集数据
print('训练数据大小:',train.shape)
print('预测数据大小:',test.shape)

该数据集共1309条数据,其中训练数据891条,预测数据418条;训练数据比预测数据多了一列:即标签"result"。

#将训练数据和预测数据合并,这样便于一起处理
full=train.append(test,ignore_index=True)
full.describe()

无明显的异常值,几乎所有数据均在正常范围内。

full.info()

Age/Cabin/Embarked/Fare四项数据有缺失值,其中Cabin字段缺失近四分之三的数据。

3.2、特征与标签关系
3.2.1、Embarked与Survived关系
sns.barplot(data=train,x='Embarked',y='Survived')

请添加图片描述

#计算不同类型Embarked的乘客,其生存率为多少
s = full.groupby('Embarked')['Survived'].value_counts().to_frame()
s2 = s/s.sum(level=0)
pd.merge(s,s2,left_index=True,right_index=True,suffixes=['_num','_rate'])

法国登船乘客生存率较高原因可能与其头等舱乘客比例较高有关,因此继续查看不同登船地点乘客各舱位乘客数量情况。

sns.catplot('Pclass',col='Embarked',data=train,kind='count',size=3)

请添加图片描述

3.2.2、Parch与Survived关系
sns.barplot(data=train,x='Parch',y='Survived')

请添加图片描述

当乘客同行的父母及子女数量适中时,生存率较高

3.2.3、SibSp与Survived关系
sns.barplot(data=train,x='SibSp',y='Survived')

请添加图片描述

当乘客同行的同辈数量适中时生存率较高

3.2.4、Pclass与Survived关系
sns.barplot(data=train,x='Pclass',y='Survived')

请添加图片描述

乘客客舱等级越高,生存率越高

3.2.5、Sex与Survived关系
sns.barplot(data=train,x='Sex',y='Survived')

请添加图片描述

女性的生存率远高于男性

3.2.6、Age与Survived关系
#创建坐标轴
ageFacet=sns.FacetGrid(train,hue='Survived',aspect=3)
#作图,选择图
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值