利用python进行泰坦尼克生存预测——数据探索分析

最近一直断断续续的做这个泰坦尼克生存预测模型的练习,这个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 港口与是否生存的关系

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

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

原文地址:https://www.cnblogs.com/gangandimami/p/9086022.html

时间: 2024-10-08 15:00:49

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

小丸子踏入python之路:python_day05(用Pandas处理泰坦尼克船员获救数据titanic_train.csv)

泰坦尼克船员获救数据: titanic_train.csv 用excel打开数据集.显示如下: 写在前边: 为了方便以后运用numpy和pandas的库,分别造它们的别名np和pd. import pandas as pd #造pandas的别名为pd import numpy as np #造numpy的别名为np 一.读取数据 import pandas as pd #造pandas的别名为pd import numpy as np #造numpy的别名为np #泰坦尼克号船员获救数据 ti

利用KNIME建立Spark Machine learning模型 2:泰坦尼克幸存预测

本文利用KNIME基于Spark决策树模型算法,通过对泰坦尼克的包含乘客及船员的特征属性的训练数据集进行训练,得出决策树幸存模型,并利用测试数据集对模型进行测试. 1.从Kaggle网站下载训练数据集和测试数据集 2.在KNIME创建新的Workflow,起名:TitanicKNIMESpark 3. 读取训练数据集 KNIME支持从Hadoop集群读取数据,本文为了简化流程直接从本地读取数据集. 在Node Repository的搜索框里输入CSV Reader,找到CSV Reader节点,

利用Python实现爬去彩票网站数据——小样

写这篇文章纯属自娱自乐. 主要是近期在自学如何利用Python解决IT运维的一些问题时,总是不得其门而入,为了增加学习兴趣,就想通过完成一个小小有趣的爬虫程序激励下自己,同时也把这次经历跟各位道友分享下. Technorati Tags: Python,爬网,彩票,数据,夏明亮 首先申明,本人不是专职coding的,所以,代码部分如果不符合专业审美,还请多多包涵:俺就是纯粹以实习那目标为基础的小白一枚:思路为先,抛砖引玉~ 步骤一:利用搜索引擎找到你需要的信息的网页资源 1. 打开百度搜索"彩票

泰坦尼克生存分析

泰坦尼克数据集描述: 案例数:1309 特征数:14个,包括年龄,性别,仓位等 总存活率:38% 统计描述部分只详细看仓位和性别这两个特征值,以及它们的联合起来对生存率的影响,我们通过简单的三张统计表格就可以发现数据具有欺骗与真实的双面性. 从男女各自的总幸存率看,男女幸存比大约为1:2,单从这点看男女幸存的比例并不是很悬殊.但是结合人数占比,男性大约占了6.5成,就可以看出总幸存比并不能很好的描述泰坦尼克中男女幸存的真实情况,最能反映性别幸存差异的是男女在各自性别中的幸存比例,可以看到男性的死

《利用python进行数据分析》读书笔记--数据加载、存储与文件格式

输入输出一般分为下面几类:读取文本文件和其他更高效的磁盘存储格式,加载数据库中的数据.利用Web API操作网络资源. 1.读写文本格式的数据 自己感觉读写文件有时候"需要运气",经常需要手工调整.因为其简单的文件交互语法.直观的数据结构,以及诸如元组打包解包之类的便利功能,Python在文本和文件处理方面已经成为一门招人喜欢的语言.pandas提供了一些用于将表格型数据读取为DataFrame对象的函数.见下表: 下面大致介绍一下这些函数在文本数据转换为DataFrame时的一些技术

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

最近接到一个工作,需要获取58同城上面的简历信息(http://gz.58.com/qzyewu/).最开始想到是用python里面的scrapy框架制作爬虫.但是在制作的时候,发现内容不能被存储在本地变量 response 中.当我通过shell载入网页后,虽然内容能被储存在response中,用xpath对我需要的数据进行获取时,返回的都是空值.考虑到数据都在源码中,于是我使用python里的beautifulSoup通过下载源码的方式去获取数据,然后插入到数据库. 需要的python包ur

利用Python来爬取“吃鸡”数据,为什么别人能吃鸡?

首先,神装镇楼背景 最近老板爱上了吃鸡(手游:全军出击),经常拉着我们开黑,只能放弃午休的时间,陪老板在沙漠里奔波. 上周在在微信游戏频道看战绩的时候突发奇想,是不是可以通过这个方式抓取到很多战斗数据,然后分析看看有什么规律.秀一波战绩,开黑情况下我们团队吃鸡率非常高,近100场吃鸡次数51次简单评估了一下,觉得可行,咱就开始. Step 1 分析数据接口 第一步当然是把这些战绩数据采集下来,首先我们需要了解页面背后的故事.去看看页面是如何获取战斗数据的. 使用Charles抓包 抓包实现 在M

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

package kaggle import org.apache.spark.SparkContext import org.apache.spark.SparkConf import org.apache.spark.sql.{SQLContext, SparkSession} import org.apache.spark.mllib.regression.LabeledPoint import org.apache.spark.mllib.classification.{LogisticR

利用Python批量抓取京东评论数据

京东图书评论有非常丰富的信息,这里面就包含了购买日期.书名.作者.好评.中评.差评等等.以购买日期为例,使用Python + Mysql的搭配进行实现,程序不大,才100行.相关的解释我都在程序里加注了: 1 from selenium import webdriver 2 from bs4 import BeautifulSoup 3 import re 4 import win32com.client 5 import threading,time 6 import MySQLdb 7 8