泰坦尼克之灾案例是Kaggle入门的案例,本篇分析是参照https://github.com/Speedml/notebooks/blob/master/titanic/titanic-data-science-solutions-refactor.ipynb来写的,分析思路和代码很详细,本篇文章的代码地址https://github.com/LuLane/titanic;

一:确定任务和目标

首先先确定该案例是一个二类分类监督学习问题,根据乘客的特征来预测其是否能够生还;

七个工作流:

classifying(分类):将样本进行分类,理解不同类别和目标之间的关系;

Correlating(相关性):特征和目标值之间的关联性,特征之间的关联性;

Converting(转换):训练模型时,为了适用于模型算法,需要将特征转化为数值等效值,例如将文本类型转化为数值型;

Completing(完善):运用模型算法时,最好确定特征值中无缺失值,所以在数据准备阶段需要补全或删除缺失值;

Correcting(校验):分析给出的训练集,如果发现有错误的值,校正过来这些值或者剔除含有这些值的样本;

Creating(新建):根据已有的特征来创建新的特征;

Charting(制图):选择合适的图形来可视化;

二:数据准备

1.获取数据

数据可以从Kaggle官网https://www.kaggle.com/获取;

2.描述分析数据

利用DataFrame类型的 head()、describe()、info()等来查看数据集的基本格式、类型;

[‘PassengerId’ ‘Survived’ ‘Pclass’ ‘Name’ ‘Sex’ ‘Age’ ‘SibSp’ ‘Parch’ ‘Ticket’ ‘Fare’ ‘Cabin’ ‘Embarked’]

其中survived是目标值,0表示未生还,1表示生还;Pclass是舱次等级,sibsp是兄弟姐妹个数,parch是子女个数,Cabin是客舱,Embarked是登陆码头;

从这一步可以可以看出:

分类变量:survived, sex, embarked,

有序变量: pclass

数值变量:age, fare

分离变量:SibSp, Parch

混合变量:Ticket Cabin

包含空值的列:cabin,age,embarked;

另外,name是唯一的,sex性别有两种可能性,男性male占比65%,cabin有重复性,几个人可能共享一个cabin,embarked有3中可能性,其中3占比最高;

ticket有重复性;38%的乘客幸存了下来,>75%的乘客没有带父母和孩子(parch),fare票价相差很大;

3.根据数据分析来建立假设

根据以上分析可以先初步建立一些假设:

相关性:分析哪个变量和survive相关;

完整性:或许应该将age和embarked补充完整,age是一定和survived相关的,embarked也许和survived相关也许和另一个重要变量相关;

校验:ticket变量或许该去除,因为有较大的重复性,或许和survived关联不大;cabin变量应该去除,缺失值较多;passengerid应该去除,name变量格式不规范,对survived无影响,应该去除,但是可以从name中提取一些title字段,观察是否对幸存率有影响;

新建:可以造一个family变量,又sibsp和parch加总得到;可以造一个age bands(年龄段),将数字型转变为有序分类变量;可以造一个fare range,将将数字型转变为有序分类变量

分类:sex=female的更容易幸存;children(age

4.数据透视分析

为了确认我们的观察和假设,我们可以通过数据透视快速分析特征相关性;但是只能对分类、有序和离散变量应用,且变量值非空

例如:

从这一步可以看出,survived和Pclass、sex以及sibsp、parch有关;

5.可视化分析

利用图形来验证我们的假设

5.1 数值型-直方图

从图中可以看出,age在15-25之前的幸存率较低,5岁一下的幸存率较高;大部分的乘客都在15-35之间

因此决定:

将age纳入训练模型,后续需要补全age的空值,将age分段;

5.2 数值变量和有序变量之间

将多种变量结合起来展示,适用于数值型和有限个分类的分类变量;

可以观察到:

pclass=3的乘客最多,但幸存率最低,说明幸存与否和Pclass有关

在pclass=2和pclass=3的婴儿存活率较高;

在pclass=1的乘客大部门都幸存了下来;

在不同的Pcalss中年龄分布不同

结论:

将Pclass纳入训练模型

还有可视化分类变量之间的关联、分类变量和数值变量之间的关联,结论是Embarked变量和幸存率相关,除了在Embarked=C外,male的幸存率都比价低,也许Embarked变量不是直接作用域;票价越高,幸存率也越高,需要对票价进行分段,将票价区间段纳入训练模型;

6.处理数据

到目前为止我们总结了几个假设和决定,但还未对数据进行任何处理,

现在开始要根据上面的分析对数据进行规整,处理空值、创造新的变量、分类等;

6.1.校验数据-剔除无效特征

剔除无用的特征是第一步;根据我们的假设,我们将ticket和cabin两个变量剔除,

训练集和测试集都要去掉以保持一致性:

6.2.根据已有的变量来创建新的变量

例如根据Sibsp和parch来常见一个家庭成员变量;

6.3 将分类变量转化为数值型

模型算法不支持字符串类型,需要将分类变量转化为数值型;

例如将sex性别的female转化为1,male转化为0;

6.4补全缺失值(数值型)

补全缺失值,有3种方法:

1.简单的方法是在平均值和标准差之间产生随机数

2.更常见的做法是用其他相关的变量预估缺失值,在这个例子中age、sex和pclass相关,

用pclass和sex的特征组合的age中位数来预估该age的缺失值;

3.结合1和2,用平均值和标准差之间的随机数来代替中位数

示例为对age缺失值进行补全,后续还需要将age进行分段转化为分类变量;

6.5补全缺失值(分类变量)

embarked有两个缺失值,我们将频数最大的值进行填充,然后将embarked转化为数值型;

7.模型训练

数据处理好之后就可以进行模型训练了,因为我们的任务是一个二元分类回归问题,因此适用的模型算法有:

Logistic Regression/KNN/SVM/Naive Bayes Classifier/Decision Tree/Random Forrest/

preception/Artificial neural network/ Relevance Vector Machine or RVM

8.对模型进行评估

查看各模型的分类准确率:

random forest 和 decision tree 虽然分数一样,但是选择random forest,

因为random forest纠正了decision tree的过拟合问题

9.保存结果

完整分析和代码请参照https://github.com/LuLane/titanic;

python泰坦尼克号案例分析_Python机器学习案例-泰坦尼克之灾相关推荐

  1. Kaggle泰坦尼克之灾:逻辑回归模型实现笔记(一)

    Kaggle泰坦尼克之灾:逻辑回归模型实现笔记(一) 1.引言 2.kaggle泰坦尼克之灾的介绍 3.笔记 用到的函数 第一步:了解数据 第二步:分析数据之间的关系 第三步:补全缺失值 第四步:特征 ...

  2. 机器学习系列(1)_数据分析之Kaggle泰坦尼克之灾

    本篇博客通过分析泰坦尼克号事故中乘客的信息,从而得出一些相关关系的判断,并且使用Python可视化的手段更加具体的展现. 注:本篇博客参考资料: 1.kaggle入门–泰坦尼克号之灾(某书) 2.机器 ...

  3. kaggle 入门:逻辑回归应用之Kaggle泰坦尼克之灾

    经典又兼具备趣味性的Kaggle案例泰坦尼克号问题 kaggle入门--逻辑回归应用之kaggle泰坦尼克之灾 原文连接:https://blog.csdn.net/han_xiaoyang/arti ...

  4. kaggle入门-泰坦尼克之灾

    kaggle入门-泰坦尼克之灾 引言 数据认识 总结 特征处理 建模预测 logistic分类模型 随机森林 SVM xgboost 模型验证 交叉验证 学习曲线 高偏差: 高方差 模型融合 总结 后 ...

  5. 机器学习系列(3)_逻辑回归应用之Kaggle泰坦尼克之灾

    作者: 寒小阳 时间:2015年11月. 出处:http://blog.csdn.net/han_xiaoyang/article/details/49797143 声明:版权所有,转载请注明出处,谢 ...

  6. 机器学习实战 | 逻辑回归应用之“Kaggle泰坦尼克之灾”

  7. 逻辑回归应用之Kaggle泰坦尼克之灾

    1.引言 先说一句,年末双十一什么的一来,真是非(mang)常(cheng)欢(gou)乐(le)!然后push自己抽出时间来写这篇blog的原因也非常简单: 写完前两篇逻辑回归的介绍和各个角度理解之 ...

  8. kaggle——Titanic泰坦尼克之灾

    1)目标 任务网址:kaggle_泰坦尼克号 1912年4月15日,在她的处女航中,被广泛认为的泰坦尼克号与冰山相撞后沉没.不幸的是,船上没有足够的救生艇供所有人使用,导致2224名乘客和机组人员中的 ...

  9. 信息系统项目管理师-案例分析专题(二)案例中常见问题找茬笔记

    场景 信息系统项目管理师-案例分析专题(一)案例简介.答题方法.要点笔记: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1181 ...

最新文章

  1. 统计寄存器AX中1 的个数
  2. iview的走马灯嵌套在模态框中,宽度为0的解决方案
  3. JAVA入门级教学之(方法-1)
  4. Java程序员如何选择未来的职业路线
  5. C++面试题:list和vector有什么区别?
  6. Symantec 不用密码卸载
  7. hdu 1520 树形dp入门
  8. windows安装pyspider教程
  9. Bjui框架--日期选择器
  10. ftp服务器上传显示550,ftp上传文件服务器报550
  11. RH8搭建静态网站——基于https协议的静态网站(综合练习)
  12. qq影音4.0 android,QQ影音4.0官方最新正式版
  13. nginx中配置root和alias的区别
  14. (附超声射频数据)matlab实现b超原始信号数据生成图像
  15. linux设置全局代理
  16. Iptables DNAT实现broadcast与unicast之间相互映射
  17. w7计算机配置在哪里打开,win7的运行在哪里打开 win7打开运行的方法【图文】
  18. oracle篮球,篮球小王子!任嘉伦打篮球也不来赖,超爱11号
  19. 那些你可能用得上的在线办公神器
  20. HCCG-CycleGAN网络结构、原理、以及相关代码--Generating Handwritten Chinese Characters using CycleGAN

热门文章

  1. java多线程售票问题_使用java多线程实现火车站售票的问题
  2. Cannot convert value of type 'org.apache.ibatis.session.defaults.DefaultSqlSessionFactory' to requir
  3. 走钢索的人---走出软件作坊:三五个人十来条枪 如何成为开发正规军(十七)[转]...
  4. vba 定义类_类模块的定义及设计
  5. 如何选择企业即时通讯软件
  6. python除法保留小数_python中的除法_python中除法_python 除法_python 除法保留小数
  7. Codeforces Round #533(Div. 2) A.Salem and Sticks
  8. linux 新建1 10文件夹,linux创建目录和文件的命令
  9. 2100306-52-1,N-Mal-N-bis(PEG4-acid)一种马来酰亚胺PEG试剂,具有两个末端羧酸和一个马来酰亚胺(Mal)基团
  10. d3.js transition无限循环