机器学习实战入门经典案例:泰坦尼克号乘客获救预测-进阶
天池项目链接:https://tianchi.aliyun.com/notebook-ai/detail?postId=6772
(作者: 大树先生
博客: http://blog.csdn.net/koala_tree
知乎:https://www.zhihu.com/people/dashuxiansheng
GitHub:https://github.com/KoalaTree)
数据集下载地址:https://tianchi.aliyun.com/datalab/dataSet.html?spm=5176.100073.0.0.4b9f6fc1syvnEp&dataId=1386
github:https://github.com/oliveeeeee/Machine-Learning-Project
1、数据总览
样本大小、变量名和类型、缺失值情况、正负比
2、缺失值处理
一些机器学习算法能够处理缺失值,比如神经网络,一些则不能。
一般处理方法:删行、删列、补(均值、众数等)、赋值、预测(随机森林、线性回归)
3、分析数据关系
3.1 性别与是否生存的关系 (柱状图——不同性别的生存率是否差别显著)
3.2 船舱等级和是否生存的关系 (柱状图——不同等级船舱的生存率是否差别显著,不同等级船舱的男女生存率是否差别显著)
3.3 年龄与是否生存的关系(小提琴图——不同等级船舱下的年龄分布和生存的关系、不同性别下的年龄分布和生存的关系,直方图、箱型图——总体的年龄分布,核密度估计图——不同年龄下的生存和非生存的分布情况,柱状图——不同年龄下的生存率、将乘客划分为四个年龄群体下的生存率)
3.4 称呼与存活与否的关系(从名字中提取出称呼,柱状图——不同称呼与生存率的关系,柱状图——名字长度和生存率的关系)
3.5 有无兄弟姐妹和存活与否的关系(饼图——有兄弟姐妹的乘客的生存与否分布、无兄弟姐妹的乘客的生存与否的分布)
3.6 有无父母子女和存活与否的关系(饼图——有父母子女的乘客的生存与否分布、无父母子女的乘客的生存与否的分布)
3.7 亲友的人数和存活与否的关系(柱状图——不同父母子女人数的存活率、不同兄弟姐妹人数的存活率、不同父母子女和兄弟姐妹总和数的存活率)
3.8 票价分布和存活与否的关系(直方图——票价的分布,多类型箱型图——不同船舱等级下的票价分布,柱状图——生存与否与票价均值和方差的关系)
3.9 船舱类型和存活与否的关系(柱状图——Cabin缺失与否和生存率的关系、不同船舱类型下的生存率)
3.10 港口和存活与否的关系(柱状图——不同港口下生存和遇难的个数,折线图factorplot——不同港口下的生存率)
3.11 其他可能和存活与否有关系的特征(将这些因素交由模型来决定其重要性)
4、变量转换
Scikit-learn要求数据都是数字型numeric,所以我们要将一些非数字型的原始数据转换为数字型numeric。
定性(Qualitative)的转换:dummy variables(one-hot), factoring
定量(Quantitative)的转换:Scaling,Binning
5、特征工程
特征的处理、构造、丢弃、正则化,特征间相关性分析,特征之间的数据分布图,分训练集和测试集
6、模型融合及测试
6.1 利用不同的模型来对特征进行筛选,选出较为重要的特征(randomforest,AdaBoost,ExtraTree,GradientBoosting,DecisionTree)
6.2 依据我们筛选出的特征构建训练集和测试集
6.3 模型融合(Model Ensemble)
常见的模型融合方法有:Bagging、Boosting、Stacking、Blending。
采用Stacking框架融合:这里我们使用了两层的模型融合:
Level 1使用了:Random Forest、AdaBoost、ExtraTrees、GBDT、Decision Tree、KNN、SVM,一共7个模型
Level 2使用了XGBoost,使用第一层预测的结果作为特征对最终的结果进行预测。
6.4 预测并生成提交文件
7. 验证:学习曲线
通过观察学习曲线判断是否欠拟合或过拟合。
8. 超参数调试