Kaggle-Titanic一个完整的例子
特征工程
- 数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已
- 挑选合适的特征,并构建一些新特征加入模型
- 详细解释看参考文档[1]
原有的特征
- PassengerId:一个用以标记每个乘客的数字id
- Survived:标记乘客是否幸存——幸存(1)、死亡(0)。我们将预测这一列。
- Pclass:标记乘客所属船层——第一层(1),第二层(2),第三层(3)。
- Name:乘客名字。
- Sex:乘客性别——男male、女female
- Age:乘客年龄
- SibSp:船上兄弟姐妹和配偶的数量。
- Parch:船上父母和孩子的数量。
- Ticket:乘客的船票号码。
- Fare:乘客为船票付了多少钱。
- Cabin:乘客住在哪个船舱。
- Embarked:乘客从哪个地方登上泰坦尼克号。
挑选出来加入模型的特征
- Pclass:标记乘客所属船层——第一层(1),第二层(2),第三层(3)。
- Sex:乘客性别——男male、女female
- Age:乘客年龄
- Fare:乘客为船票付了多少钱。
- Embarked:乘客从哪个地方登上泰坦尼克号。
构造的新特征
- Title,头衔
- 从Name中提取,类似于Mr. Miss.等
- Family,在船上的家人人数
- SibSp和Parch再加上他自己
- IsAlone,是否一个人
- Family
- Age*Pclass
- 没理由,加进去啊效果好
缺失值处理
- Age,使用同Pclass和Sex的中位数补全
- Fare,使用中位数补全
- Cabin,缺失值太多删除该特征
数据类型转化
- 把数据都转化为数值型
模型
- 使用Logistic Regression模型分析各特征的贡献率
- 训练子模型,网格搜索合适的参数
- 5折交叉验证获得预测结果
- 用Stacking方法预测最后的结果
使用的子模型
- Random Forest
- Extra Trees
- AdaBoost
- Gradient Boosting
- Support Vector Classifier
- Decision Tree Classfifier
- K Nearest Neighbors Classifier
搜索参数
- 限定参数,使用GridSearchCV方法搜索合适的参数
集成模型
- 使用xgboost模型集成,得到最后的结果
参考文档
[1] 数据清洗&特征工程
[2] Stacking集成模型
[3] 完整代码A complete practice和其他Kaggle教程