機器學習實戰入門經典案例:泰坦尼克號乘客獲救預測-進階
天池項目鏈接: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. 超參數調試