XGBoost解决Titanic(kaggle)

2017-11-18  本文已影响0人  Cheney康
问题描述 数据读取 features选取。选取数据中的features进行训练,根据对题目的分析,可知’PassengerId’是冗余信息,而’Name’,’Ticket’,'Cabin'三者对于乘客生存无明显影响,所以不选取。其余七项为选取的训练features 缺失数据填充。首先填充训练集缺失数据,Embarked列填补S是因为该列S出现的次数最多,所以缺失值是S的可能性最大,Age列选择填补均值。 再填充测试集缺失数据,Embarked列,Age列和训练集一样,但是测试集中Fare列也出现了缺失值,这里采用了填补均值的办法 用DictVectorizer进行分类变量特征提取,将dict类型的list数据,转换成numpy array 选择XGBOOST,这个模型在大部分kaggle比赛中都有很好的表现,控制过拟合的效果很好。 设置参数,booster:gbtree (基于树的模型 ) objective :multi:softmax (使用softmax的多分类器,返回预测的类别) num_class :2 (类别数目为2) learning_rate :0.1 (通过减少每一步的权重,可以提高模型的鲁棒性,试了几个值,0.1准确率最高) max_depth :2 (这个值也是用来避免过拟合的。max_depth越大,模型会学到更具体更局部的样本) silent :0 (能显示运行情况,让我们更好地理解模型)  设置迭代次数 sklearn.cross_validation进行训练数据集划分,训练集和交叉验证集比例。我这里划分了20%的数据作为验证集 矩阵赋值 watchlist 显示train-error和val-error,方便查看运行情况,帮助调整参数。 训练模型。 early_stopping_rounds 当设置的迭代次数较大时,early_stopping_rounds 可在100次迭代次数内准确率没有提升就停止训练。 用训练出的模型对测试集的数据进行预测。 将测试的结果保存为CSV文件 完整代码(准确率0.79)
上一篇下一篇

猜你喜欢

热点阅读