泰坦尼克号数据集_Python数据分析养成记4——预测泰坦尼克号生存概率

一、提出问题

泰坦尼克号是当时世界上体积最庞大、内部设施最豪华的客运轮船,有“永不沉没”的美誉 。然而不幸的是,在它的处女航中,泰坦尼克号便遭厄运。本文准备预测泰坦尼克号中乘客的生存概率。

二、理解数据

言归正传,首先登陆kaggle官网:

Titanic: Machine Learning from Disaster​www.kaggle.com

该文中有项目的详细介绍,在这里可下载后面学习需要的数据:

b92d332932fa4ed1e97adcecf88e16ae.png
#导入处理数据包

0dfee0ed25ae88b78925705d241d5885.png

训练数据(train.csv,用于训练模型)总共891行×12列数据,含存活率Survived。

测试数据(test.csv,用于检验模型的准确性)总共418行×11列数据,较训练数据少了Survive

d列。

#合并数据集,方便同时对两个数据集进行清洗

d8384daa0176f5b14b97425570363712.png

数据中,各个英文指标含义如下:

27d391c0b14cdaf83b88dbcabda6bc4b.png
print 

e85cf3b026fd74d224c86ca815d631ec.png

三、数据清洗

# 查看每一列的数据类型,和数据总数

2934da06a5683f856d3007a5afeef220.png

我们发现数据总共有1309行。

其中数据类型列:年龄(Age)、船舱号(Cabin)里面有缺失数据:

(1)年龄(Age)里面数据总数是1046条,缺失了1309-1046=263条数据

(2)船票价格(Fare)里面数据总数是1308条,缺失了1条数据

字符串列:

(1)登船港口(Embarked)里面数据总数是1307,只缺失了2条数据,缺失比较少

(2)船舱号(Cabin)里面数据总数是295,缺失了1309-295=1014,缺失比较大

这为我们下一步数据清洗指明了方向,只有知道哪些数据缺失数据,我们才能有针对性的处理。

1、数据预处理

(1)缺失值处理
在前文理解数据阶段,我们发现数据总共有1309行。 其中数据类型列:年龄(Age)、船票价格(Fare)里面有缺失数据。 字符串列:登船港口(Embarked)、船舱号(Cabin)里面有缺失数据。
这为我们下一步数据清洗指明了方向。

缺失值如果是数值类型,用平均值取代(年龄、船票价格)

#年龄(Age)

eb3bfb6e652bda8380f74c7f2afff644.png

缺失值如果是分类数据,用最常见的类别取代(登船港口、客舱等级)

#用最常见的登船港口S来取代

1aeb6cb0163b4b90d504c9d36dec4319.png
#查看最终缺失值处理情况,记住生成情况(Survived)这里一列是我们的标签,用来做机器学习预测的,不需要处理这一列

051f220f9d2cd4305285d5cdacd90c64.png

2、特征提取

查看数据类型,分为3种数据类型:

(1)数值类型:

乘客编号(PassengerId),年龄(Age),船票价格(Fare),同代直系亲属人数(SibSp),不同代直系亲属人数(Parch)

(2)时间序列:无

(3)分类数据:

a、有直接类别的

乘客性别(Sex):男性male,女性female

登船港口(Embarked):出发地点S=英国南安普顿Southampton,途径地点1:C=法国 瑟堡市Cherbourg,出发地点2:Q=爱尔兰 昆士敦Queenstown

客舱等级(Pclass):1=1等舱,2=2等舱,3=3等舱

b、字符串类型:可能从这里面提取出特征来,也归到分类数据中

乘客姓名(Name)

客舱号(Cabin)

船票编号(Ticket)

性别处理

'''

9aca42dec2309a4a8a72a3d0e20437a8.png

登船港口(Embarked)

'''

8360717c357312f6c5ed4aaac72ddc56.png

客舱等级(Pclass)

'''

8bdde89f9fcb11cd8ec0704a4838e47e.png
部分摘录

(3)分类数据:字符串类型

字符串类型:可能从这里面提取出特征来,也归到分类数据中,这里数据有:乘客姓名(Name)、客舱号(Cabin)、船票编号(Ticket)

从姓名中提取头衔

'''

f7ccc922f662089bc61a83cda13a3327.png
'''

7675f86f864971a4e904244563059d04.png
#添加one-hot编码产生的虚拟变量(dummy variables)到泰坦尼克号数据集full

从客舱号中提取客舱类别

'''

53e106da285c827ebd58f61a8adba1d5.png
#添加one-hot编码产生的虚拟变量(dummy variables)到泰坦尼克号数据集full

建立家庭人数和家庭类别

#存放家庭信息

2960b7092d8f090921abe4bf0c4ddcfd.png
#添加one-hot编码产生的虚拟变量(dummy variables)到泰坦尼克号数据集full

(1309, 33)

3、特征选择

相关系数法:计算各个特征的相关系数

#相关性矩阵

c4112256247c81bb7c398fc3824de2f4.png

194263798cb4534e20adc9176f6e4fbf.png

根据各个特征与生成情况(Survived)的相关系数大小,我们选择了这几个特征作为模型的输入:头衔(前面所在的数据集titleDf)、客舱等级(pclassDf)、家庭大小(familyDf)、船票价格(Fare)、船舱号(cabinDf)、登船港口(embarkedDf)、性别(Sex)

#特征选择

(5,27)

四、数据建模

1、建立训练数据集和测试数据集

'''

0c90422248be588728492ac5bbe92210.png

2、选择机器学习算法

本文采用逻辑回归法。

#第1步:导入算法

385cf4fc9199c14e5fa9cd6aa336a267.png
# 分类问题,score得到的是模型的正确率
model.score(test_X , test_y )

0.84357541899441346

五、模型预测

#使用机器学习模型,对预测数据集中的生存情况进行预测

这样模型预测结果就输出到文件 titanic_pred.csv 中,可提交至Kaggle查看预测结果的准确率。

六、小结

1、解决问题前,先不急于动手,先想清楚问题的整体解决思路。

2、文中不尽详解之处,可对照《利用Python进行数据分析》第7章进行查看。

《利用Python进行数据分析·第2版》第1章 准备工作​www.jianshu.com
17dacb82c971618b444d65fdc25551d1.png

3、多思考,多复盘,多敲代码。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值