1. 数据处理
简单分为三种:缺失数据处理、新特征生成和数据归一化
1.1 缺失数据处理:
(1) 直接丢掉 - 原数据量较大,缺失数据量较小,丢掉几条数据一般无妨
(2) 用平均数 - 用其他特征基本与本条差不多的数据的平均数,适合连续数据
(3) 用中位数 - 用其他数据的中位数,适合连续数据
(4) 用众数 - 用其他数据的众数,适合离散分类型数据
(5) 模型预测 - 当该数据对最终结果的预测印象比较大的时候,需要更加准确的数据。
(6) 用没有出现过的值整体取代缺失值 - 这个不知道什么时候试用......但是在这个实验中来看,对Deck缺失值的补充,用这个方法好于用众数。
2.2 新特征的生成
用已有的数据去生成一个关联特征,一方面减少现有特征的数量(可以理解为降维,如实验中的family特征的提取 [Family = Parch + SibSp + 1]),另一方面可以从现有的数据中提取出更具代表性的数据(如实验中的Deck就是从cabin中提取出来的)。
2.3 数据归一化
scale不在同一数量级上的特征,可能最后影响分类器的性能,如实验中的age和fare。
2. 分类器选择
分类器实验了Linear Regression, Radom Forest, Decision Tree和XGBoost。
结果如下:
No1. Linear Regression - 0.78947
No2. Radom Forest - 0.77512
No3. XGBoost - 0.74641
No4. Decision Tree - 0.67464
我的实验kernel在这里:https://www.kaggle.com/shenglei/first-try-in-titanic/
欢迎指导,不知道数据处理上还有没有可以提升的地方。
3. 集成学习--stacking
Ensemble的kernel在这里:https://www.kaggle.com/shenglei/second-try-in-titanic-with-ensemble-stacking/
4. 总结
同样的特征处理方法,不同的训练模型,集成学习的确有提升效果。
No1. Stacking - 0.79426
No2. Linear Regression - 0.78947
No3. Radom Forest - 0.77512
No4. XGBoost - 0.74641
No5. Decision Tree - 0.67464
网友评论