python泰坦尼克号案例分析_Python机器学习案例-泰坦尼克之灾
泰坦尼克之灾案例是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机器学习案例-泰坦尼克之灾相关推荐
- Kaggle泰坦尼克之灾:逻辑回归模型实现笔记(一)
Kaggle泰坦尼克之灾:逻辑回归模型实现笔记(一) 1.引言 2.kaggle泰坦尼克之灾的介绍 3.笔记 用到的函数 第一步:了解数据 第二步:分析数据之间的关系 第三步:补全缺失值 第四步:特征 ...
- 机器学习系列(1)_数据分析之Kaggle泰坦尼克之灾
本篇博客通过分析泰坦尼克号事故中乘客的信息,从而得出一些相关关系的判断,并且使用Python可视化的手段更加具体的展现. 注:本篇博客参考资料: 1.kaggle入门–泰坦尼克号之灾(某书) 2.机器 ...
- kaggle 入门:逻辑回归应用之Kaggle泰坦尼克之灾
经典又兼具备趣味性的Kaggle案例泰坦尼克号问题 kaggle入门--逻辑回归应用之kaggle泰坦尼克之灾 原文连接:https://blog.csdn.net/han_xiaoyang/arti ...
- kaggle入门-泰坦尼克之灾
kaggle入门-泰坦尼克之灾 引言 数据认识 总结 特征处理 建模预测 logistic分类模型 随机森林 SVM xgboost 模型验证 交叉验证 学习曲线 高偏差: 高方差 模型融合 总结 后 ...
- 机器学习系列(3)_逻辑回归应用之Kaggle泰坦尼克之灾
作者: 寒小阳 时间:2015年11月. 出处:http://blog.csdn.net/han_xiaoyang/article/details/49797143 声明:版权所有,转载请注明出处,谢 ...
- 机器学习实战 | 逻辑回归应用之“Kaggle泰坦尼克之灾”
- 逻辑回归应用之Kaggle泰坦尼克之灾
1.引言 先说一句,年末双十一什么的一来,真是非(mang)常(cheng)欢(gou)乐(le)!然后push自己抽出时间来写这篇blog的原因也非常简单: 写完前两篇逻辑回归的介绍和各个角度理解之 ...
- kaggle——Titanic泰坦尼克之灾
1)目标 任务网址:kaggle_泰坦尼克号 1912年4月15日,在她的处女航中,被广泛认为的泰坦尼克号与冰山相撞后沉没.不幸的是,船上没有足够的救生艇供所有人使用,导致2224名乘客和机组人员中的 ...
- 信息系统项目管理师-案例分析专题(二)案例中常见问题找茬笔记
场景 信息系统项目管理师-案例分析专题(一)案例简介.答题方法.要点笔记: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1181 ...
最新文章
- 统计寄存器AX中1 的个数
- iview的走马灯嵌套在模态框中,宽度为0的解决方案
- JAVA入门级教学之(方法-1)
- Java程序员如何选择未来的职业路线
- C++面试题:list和vector有什么区别?
- Symantec 不用密码卸载
- hdu 1520 树形dp入门
- windows安装pyspider教程
- Bjui框架--日期选择器
- ftp服务器上传显示550,ftp上传文件服务器报550
- RH8搭建静态网站——基于https协议的静态网站(综合练习)
- qq影音4.0 android,QQ影音4.0官方最新正式版
- nginx中配置root和alias的区别
- (附超声射频数据)matlab实现b超原始信号数据生成图像
- linux设置全局代理
- Iptables DNAT实现broadcast与unicast之间相互映射
- w7计算机配置在哪里打开,win7的运行在哪里打开 win7打开运行的方法【图文】
- oracle篮球,篮球小王子!任嘉伦打篮球也不来赖,超爱11号
- 那些你可能用得上的在线办公神器
- HCCG-CycleGAN网络结构、原理、以及相关代码--Generating Handwritten Chinese Characters using CycleGAN
热门文章
- java多线程售票问题_使用java多线程实现火车站售票的问题
- Cannot convert value of type 'org.apache.ibatis.session.defaults.DefaultSqlSessionFactory' to requir
- 走钢索的人---走出软件作坊:三五个人十来条枪 如何成为开发正规军(十七)[转]...
- vba 定义类_类模块的定义及设计
- 如何选择企业即时通讯软件
- python除法保留小数_python中的除法_python中除法_python 除法_python 除法保留小数
- Codeforces Round #533(Div. 2) A.Salem and Sticks
- linux 新建1 10文件夹,linux创建目录和文件的命令
- 2100306-52-1,N-Mal-N-bis(PEG4-acid)一种马来酰亚胺PEG试剂,具有两个末端羧酸和一个马来酰亚胺(Mal)基团
- d3.js transition无限循环