最近一直断断续续的做这个泰坦尼克生存预测模型的练习,这个kaggle的竞赛题,网上有很多人都分享过,而且都很成熟,也有些写的非常详细,我主要是在牛人们的基础上,按照数据挖掘流程梳理思路,然后通过练习每一步来熟悉应用python进行数据挖掘的方式。

数据挖掘的一般过程是:数据预览——>数据预处理(缺失值、离散值等)——>变量转换(构造新的衍生变量)——>数据探索(提取特征)——>训练——>调优——>验证

1 数据预览

1.1 head()

预览数据集的前面几条数据可以大致看看每个字段的值究竟长什么样。

1.2 info()

可以看每个字段有多少非空值,字段的类型是什么样的

1.3 describe()

可以大致描述每个整数或者浮点型的数值分布,看最小值,最大值和四分位数,可以大致了解数据的偏移情况。

2.数据预处理

从前面数据预览中发现年龄(age)、船舱号(Cabin)、登岸口(Embarked)有数据的缺失。

登岸口通过后面的数据探索可以发现只有3个值,而且缺失的数量也不大,因此这里填充为众数。

船舱号只有204个有值,一般来说,缺失比例较大的特征可以考虑舍弃,而这里联想到缺失是否表示乘客的票本身就没有船舱号,就像我们买的无座票一样,本身就没有座位号,因此这里先填充为0

年龄字段也存在缺失,一般来说,老弱病残幼是要受到特殊照顾的,因此年龄应该会是一个比较重要的特征,并且因为它是连续值,这里采用算法预测的方式来进行填充。

最后我们来看一下填充后的数据情况

3.数据探索

3.1 各个字段值的分布情况

先看代码:

以上是画布相关设置

subplots_adjust()是用来调整画布内子图的间隔大小的。

以上是在画布相应位置画各个子图的代码。图形如下:

3.2 探索各字段与是否生存的关系,寻找对模型有用的特征

3.2.1 不同乘客等级与是否生存的关系

舱位越高级的,生存的比例越大。3等舱里面未获救的比例明显增大。说明舱位与是否生存有关系。

3.2.2 性别与是否生存的关系

从数据上看,获救的女性比例很高,电影里面也说了女士优先,因此性别与是否生存也有较大关系。

3.2.3 年龄与是否生存的关系

首先看一下年龄的分布情况和值的离散情况

从图中可以发现大部分都是集中在20-50岁之间的,从箱线图看平均年龄接近30岁。

因为年龄是连续值,因此我们考虑把年龄分段后,进行分段统计展示看年龄与是否生存的关系。

从数据上年纪小的生存的几率要大些。不同年龄段的生存率明显有差别,说明年龄与是否生存是有关系的。

3.2.4 有无兄弟姐妹与是否生存的关系

从数据上看兄弟姐妹在1-2个的生存率最高

3.2.5是否有父母子女与是否生存的关系

数据显示父母子女个数在1-3个的生存率最高,个数越多反倒生存率下降。

3.2.6 港口与是否生存的关系

数据显示有港口的生存率明显高很多。可能是船中间有停靠到一些港口,有部分乘客下船了。

本文参考:大树先生的博客

利用python进行泰坦尼克生存预测——数据探索分析的更多相关文章

  1. pytorch kaggle 泰坦尼克生存预测

    也不知道对不对,就凭着自己的思路写了一个 数据集:https://www.kaggle.com/c/titanic/data import torch import torch.nn as nn im ...

  2. Kaggle初体验之泰坦尼特生存预测

    Kaggle初体验之泰坦尼特生存预测 学习完了决策树的ID3.C4.5.CART算法,找一个试手的地方,Kaggle的练习赛泰坦尼特很不错,记录下 流程     首先注册一个账号,然后在顶部菜单栏Co ...

  3. 利用Python进行数据分析(12) pandas基础: 数据合并

    pandas 提供了三种主要方法可以对数据进行合并: pandas.merge()方法:数据库风格的合并: pandas.concat()方法:轴向连接,即沿着一条轴将多个对象堆叠到一起: 实例方法c ...

  4. 利用python爬取58同城简历数据

    利用python爬取58同城简历数据 利用python爬取58同城简历数据 最近接到一个工作,需要获取58同城上面的简历信息(http://gz.58.com/qzyewu/).最开始想到是用pyth ...

  5. 利用Python进行数据分析_Pandas_处理缺失数据

    申明:本系列文章是自己在学习<利用Python进行数据分析>这本书的过程中,为了方便后期自己巩固知识而整理. 1 读取excel数据 import pandas as pd import ...

  6. python数据处理(七)之数据探索和分析

    1.探索数据 1.1 安装agate库 1.2 导入数据 1.3 探索表函数 a.排序 b.最值,均值 c.清除缺失值 d.过滤 e.百分比 1.4 连结多个数据集 a.捕捉异常 b.去重 c.缺失数 ...

  7. 利用Python进行数据分析 第8章 数据规整:聚合、合并和重塑.md

    学习时间:2019/11/03 周日晚上23点半开始,计划1110学完 学习目标:Page218-249,共32页:目标6天学完(按每页20min.每天1小时/每天3页,需10天) 实际反馈:实际XX ...

  8. 利用Python进行数据分析 第6章 数据加载、存储与文件格式(2)

    6.2 二进制数据格式 实现数据的高效二进制格式存储最简单的办法之一,是使用Python内置的pickle序列化. pandas对象都有一个用于将数据以pickle格式保存到磁盘上的to_pickle ...

  9. Spark学习笔记——泰坦尼克生还预测

    package kaggle import org.apache.spark.SparkContext import org.apache.spark.SparkConf import org.apa ...

随机推荐

  1. 【FFT卷积】BZOJ3527-力

    [题目大意] [思路] 很好这很FFT…… 想了半天也没明白到底什么是卷积∑的上下界,我当初学的时候没说一定要从0开始啊quq 我还是背不出FFT的模板我要狗带了 我上面写的什么乱七八糟的,要什么数学 ...

  2. 【快速幂】POJ3641 - Pseudoprime numbers

    输入a和p.如果p不是素数,则若满足ap = a (mod p)输出yes,不满足或者p为素数输出no.最简单的快速幂,啥也不说了. #include<iostream> #include ...

  3. [转]spring的ParameterMethodNameResolver

    例1: ParameterMethodNameResolver,这个可以根据请求的参数来确定一个需要调用的方法.例如,http://www.sf.net/index.view?testParam=te ...

  4. (转)Linux下数据段的区别(数据段、代码段、堆栈段、BSS段)

    进程(执行的程序)会占用一定数量的内存,它或是用来存放从磁盘载入的程序代码,或是存放取自用户输入的数据等等.不过进程对这些内存的管理方式因内存用途 不一而不尽相同,有些内存是事先静态分配和统一回收的, ...

  5. 陈立伟 - MultiCharts快易通(2013年8月2日)

    <MultiCharts快易通> 作 者:陈立伟 译 者: 系 列:寰宇程式交易312--挑战程式交易系列1 出 版:寰宇出版股份有限公司 字 数:千字 阅读完成:2013年8月2日

  6. NServiceBus入门:多个endpoint(Introduction to NServiceBus: Multiple endpoints)

    原文地址:https://docs.particular.net/tutorials/intro-to-nservicebus/3-multiple-endpoints/ 侵删. 目前为止,我们只是在 ...

  7. ajax跨域的解决方案

    前言 公司要做一个活动页面,在其过程中发现所有的接口,ajax请求跨域.这里对跨域做个简单介绍以及提供几种解决办法. 由于浏览器实现的同源策略的限制,XmlHttpRequest只允许请求当前源(域名 ...

  8. JavaScript基础入门教程(二)

    说明 前一篇博客介绍了js以及一些关于js基本类型的简单知识,本篇博客将详细介绍js的基础类型,捎带介绍对象类型,更详细的对象类型的说明将后续再讲. js中类型的说明 js中的类型分为基本类型和对象类 ...

  9. Shell学习:if语句 if -z -n -f -eq -ne -lt

    if  条件then Commandelse Commandfi                              别忘了这个结尾 If语句忘了结尾fitest.sh: line 14: sy ...

  10. 自制DEV皮肤

    1.打开DEV自带的皮肤制作工具 2.创建一个新的皮肤工程[File][New] 3.改变指定控件的颜色,比如背景色 4.改变控件边框的颜色.粗细