kaggle:泰坦尼克号获救预测_Titanic_EDA##

2019-12-17  本文已影响0人  卜咦

问题

数据来源于Kaggle,通过一组列有泰坦尼克号灾难幸存者或幸存者的训练样本集,我们的模型能否基于不包含幸存者信息的给定测试数据集确定这些测试数据集中的乘客是否幸存。

代码与数据分析

导入必要的包和titanic数据

image

数据集基本信息

将数据分为不同类别,分别为类别型数据和数字型数据

image

数据分布来看:

提出假设

通过pandas pivot进行简单分析

image

Pclass 等级越低,存活率越低

image

女性存活率远高于男性

image

SibSp与存活率很分散,可能需要进行重构新字段

通过可视化进行分析

数据发现

决策

通过对以上数据分析,可以得到以下决策

image

数据相关性

结合多个特征来识别相关性

数据发现

image

分类特征关联

数据发现

image

数值数据和分类数据的关系

数据发现

image

数据处理

现在我们上文中的数据分析对数据进行处理

Name 列处理

名称列提取后发现分组较为集中和准确,进行简单处理就可以得到比较明确的类别

image image

女性称谓的存活率也明显较高

image

将类别数据(Title、Sex)数字化

image image

删掉不必要的列

image

填充空缺值

填充 Age

我们考虑用三种方法对Age进行空缺值填充

  1. 随机生成一个均值±方差之间的数字

  2. 在以上的分析中我们可以看到每个阶层、性别之间的年龄分布有所不同,所以我们可以根据阶层和性别组合特征进行空缺的年龄值预测

  3. 结合1、2方法,通过阶层和性别组合特征随机生成一个均值±方差之间的数字

这里我们选择方法 2

生成年龄填充DataFrame

[图片上传中...(image-a6ff10-1576513947294-25)]

填充空缺 Age

根据每条空缺值的 Pclass 和 Sex 进行 Age 填充

image

对年龄进行分层

image

根据年龄分层将年龄类别数据数字化

image

移除多余列

image

结合 SibSp 和 Parch 创建新列

image image

删除多余字段

image

结合阶层和年龄生成新列

image

对 Embarked 列进行填充

由于绝大多数 Embarked=S,故用 S 对空缺值进行填充

image

对 Embarked 列类别数据数字化

image

对 Fare 列进行空缺值填充与分层

image

根据数据分层对 Fare 进行分类并数据化

image

数据学习模型选择与评估

我们选择以下几种模型进行学习预测:

进行训练集、预测集分割处理

image

逻辑回归

逻辑回归主要原理是 Sigmoid 函数,是在工作流早期运行的一个有用模型。Logistic回归通过使用Logistic函数(累积Logistic分布)估计概率来度量分类因变量(特征)与一个或多个自变量(特征)之间的关系 Wikipedia

image

我们可以看到各个特征的的系数:

image

SVM模型

image

KNN 模型

image

朴素贝叶斯模型

image

感知机模型

image

支持向量机模型

image

梯度下降模型

image

决策树模型

image

随机森林模型

image

对所有模型进行评价分析

随机森林和决策树的分类效果都比较好,防止过拟合选择随机森林,进行 Kaggle 数据预测

image

Kaggle 预测数据上传

Kaggle 预测集准确率只有0.74641,排名9256名。如果对模型进行适当调参,模型准确性应该会更高

image

参考资料:Titanic

END

上一篇下一篇

猜你喜欢

热点阅读