[kaggle数据] 泰坦尼克号生存预测分析

编程入门 行业动态 更新时间:2024-10-05 09:30:59

[kaggle数据] <a href=https://www.elefans.com/category/jswz/34/1734290.html style=泰坦尼克号生存预测分析"/>

[kaggle数据] 泰坦尼克号生存预测分析

一、案列背景

1912年,泰坦尼克号在第一次航行中就与冰山相撞沉没,导致了大部分乘客和船员身亡。泰坦尼克号生存预测分析作为kaggle入门项目,我们将根据部分泰坦尼克号旅客名单,来筛选哪些特征可以最好地预测一个人是否会生还。

泰坦尼克号全长约269.06米(882.75英尺),宽28.19米(92.5英尺)。共有五层甲板(分别为A-E甲板),分为头等舱,二等舱,三等舱三个等级的船舱,从英国南安普敦出发开往美国纽约,途径法国瑟堡-奥克特维尔,爱尔兰昆士敦两个港口。在途中与冰山相撞,安排救生艇时,由头等舱到三等舱就进行撤离。妇女孩子优先离开。

以上为查阅所得信息,可以更好的理解数据集中的特征。

从上述中我们可以得出几个可能对生存预测有很大影响的结论:
1、妇女、小孩生还概率较高
2、1代表头等舱,2代表二等舱,3代表三等舱
3、A甲板为头等舱,B、C甲板可能为二等舱,D、E甲板可能为三等舱
4、C 代表从法国瑟堡-奥克特维尔港口(Cherbourg),Q 代表爱尔兰昆士敦(Queenstown ),S 代表英国南安普敦(Southampton )


二、数据加载

#numpy,pandas
import numpy as np
import pandas as pd
from pandas import Series,DataFrame#plot
%matplotlib inline
import matplotlib.pyplot as plt
import seaborn as sns#load
train_df = pd.read_csv('train.csv')
test_df = pd.read_csv('test.csv')
full_df=pd.concat([train_df,test_df],ignore_index=True)
full_df.head()

Survived:是否存活(0代表否,1代表是)
Pclass:船舱阶级
Name:乘客的名字
Sex:乘客的性别
Age:乘客的年龄
SibSp:乘客在船上的兄弟姐妹和配偶的数量
Parch:乘客在船上的父母以及小孩的数量
Ticket:乘客船票的编号
Fare:船票费用
Cabin:船舱的座位号
Embarked:乘客上船的港口


三、观察数据

对数据集进行整体观察

# 查看数据框的大小
train_df.shape    #(891, 12)test_df.shape     #(418, 11)full_df.shape     #(1309, 12)

训练集和测试集合并后共有条1309条观测,12个变量

#查看各个变量的观测数和变量类型
full_df.info()


数据集有浮点型变量3个,整数变量4个,共7个数值型变量,字符串变量5个。

#检查异常和极端值(观察最大值和最小值)
full_df.describe().T

#查看各个变量的缺失个数
full_df.isnull().sum()


数据集中,缺失值的变量为:Age、Cabin、Embarked、Fare。其中Cabin几乎都缺失。


四、特征工程

因为是对生存预测进行分析,所以主要是对Survived和其他变量进行可视化分析,可以在一定程度上观察他们间是否相关。

1、Pclass

fig, (axis1,axis2,axis3) = plt.subplots(1,3,figsize=(15,4))train_df.Pclass.value_counts().plot(kind="bar",color='steelblue',ax=axis1)
axis1.set_xticklabels([3,1,2],rotation=0)
axis1.set_ylabel(u'人数',fontproperties='SimHei')
axis1.set_xlabel('Pclass')pd.crosstab(train_df.Pclass,train_df.Survived).plot.bar(stacked=True,color=['#FA2479','steelblue'],ax=axis2)
axis2.set_xticklabels([1,2,3], rotation=0)
axis2.set_ylabel(u'人数',fontproperties='SimHei')pd.pivot_table(train_df,index=['Pclass'],values=['Survived']).plot.bar(ax=axis3,color='steelblue')
axis3.set_xticklabels([1,2,3], rotation=0)axis1.set_title(u"乘客等级分布",fontproperties='SimHei')
axis2.set_title(u"各乘客等级的获救情况",fontproperties='SimHei')
axis3.set_title(u"生存概率",fontproperties='SimHei')


从图中可以看到,不同等级的舱位,生存几率也不同。高等舱位生存几率越大。

·

2、Name

数据集中的姓名有个特点,姓名中间是称谓名称,并且用符号与其他部分隔开。
联系现实生活,称谓可以在一定程度上反映一个人的职业,年龄。所以我对名字中的称谓进行了提取。

#对字符串按符号进行分裂提取
full_df['Title']=full_df['Name'].apply(lambda x: x.split(',')[1].split('.')[0].strip())  
full_df.Title.value_counts()Mr              757
Miss            260
Mrs             197
Master           61
Dr                8
Rev               8
Col               4
Major             2
Ms                2
Mlle              2
Capt              1
the Countess      1
Jonkheer          1
Sir               1
Don               1
Lady              1
Mme               1
Dona              1
Name: Title, dtype: int64

提取出来的称谓中包含英,法,西班牙语的不同叫法,把他们进行归类。
最终分成了5类。

full_df['Title'] = full_df['Title'].replace(['Capt', 'Don', 'Major', 'Col', 'Sir','Rev'], 'Mr')
full_df['Title'] = full_df['Title'].replace(['Ms','Mlle'], 'Miss'

更多推荐

[kaggle数据] 泰坦尼克号生存预测分析

本文发布于:2024-02-14 15:24:40,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1764360.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:泰坦尼克号   数据   kaggle

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!