美文网首页
kaggle:泰坦尼克号获救预测_Titanic_EDA##

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

作者: 卜咦 | 来源:发表于2019-12-17 00:33 被阅读0次

    问题

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

    代码与数据分析

    导入必要的包和titanic数据

    image

    数据集基本信息

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

    • 类别数据:Survived, Sex, and Embarked. Ordinal: Pclass

    • 数字型数据:Age, Fare. Discrete: SibSp, Parch

    image

    数据分布来看:

    • 大多数乘客(75%)没有和父母或孩子一起旅行

    • 近30%乘客有兄弟姐妹或配偶

    • 票价差异很大,只有少数乘客(<1%)支付了512美金的票价

    • 年龄较大的乘客数据较少(1%)

    提出假设

    • 关联:各个特征与存货的相关性是如何

    • 填充缺失值:对 Age 和 Embarked 进行缺失值填充

    • 清洗、处理、剔除字段:Ticket由于高重复率,Cabin仓位空值过多,PassengerId与存活无关,Name数据不标准,都需要处理后进行剔除

    • 添加字段:我们可以根据 Parch 和 SibSp 创造一个关于家庭成员数量的字段;可以从名字中提取特征形成新特征;可以从 Age 和 Fare 创造分层,使数据更具有机器学习意义

    • 分类:猜测女性(Sex = female)、儿童(Age<自定义值)、上层人士(Pclass=1)更有可能存活

    通过pandas pivot进行简单分析

    image

    Pclass 等级越低,存活率越低

    image

    女性存活率远高于男性

    image

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

    通过可视化进行分析

    数据发现

    • 婴儿(Age < 4)存活率很高

    • 年龄最大的乘客存活了下来

    • 大多数15-25岁之间的乘客没有存活下来

    • 大多数乘客处于15-35岁之间

    决策

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

    • 我们应该对年龄进行缺失值填空、分层
    image

    数据相关性

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

    数据发现

    • Pclass=3的乘客最多,但存活率最低

    • Pclass=2和Pclass=3的婴儿乘客幸存率很高

    • 大多数Pclass=1的乘客存活率很高

    • 不同阶层的年龄分布不同

    image

    分类特征关联

    数据发现

    • 女性存活率比男性高很多

    • Pclass=3的男性存活率更高

    • Pclass=3和男性乘客的生存率各不相同

    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

    数据学习模型选择与评估

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

    • Logistic Regression

    • KNN or k-Nearest Neighbors

    • Support Vector Machines

    • Naive Bayes classifier

    • Decision Tree

    • Random Forrest

    • Perceptron

    • Artificial neural network

    • RVM or Relevance Vector Machine

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

    image

    逻辑回归

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

    image

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

    • Sex 的系数为2.019,性别为1(female),存活率越大

    • Pclass系数为-1.046,值越大,存活率越低

    image

    SVM模型

    image

    KNN 模型

    image

    朴素贝叶斯模型

    image

    感知机模型

    image

    支持向量机模型

    image

    梯度下降模型

    image

    决策树模型

    image

    随机森林模型

    image

    对所有模型进行评价分析

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

    image

    Kaggle 预测数据上传

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

    image

    参考资料:Titanic

    END

    相关文章

      网友评论

          本文标题:kaggle:泰坦尼克号获救预测_Titanic_EDA##

          本文链接:https://www.haomeiwen.com/subject/hqvjnctx.html