数据总览
首先,我们先把一些库和训练数据导入
简单的看一下训练数据的信息,其中Embarked有两个缺失值,Age缺失值较多,Cabin有效值太少了跟本没什么用。
数据清洗
在我们开始搭建神经网络进行训练之前,数据清洗是必要的。这一步可以简单一些,不过如果想要得到更好的效果,清洗之前的数据分析还是不可少的。这里的数据分析,我就不再赘述了,给大家推荐一篇博客,上面有很详细的分析过程——Kaggle_Titanic生存预测
我们用随机森林算法,对’Age’的缺失值进行预测,当然这里也可以用其他回归算法,来进行预测
如果对上一步觉得太麻烦,或不喜欢的话,可以更简单一点,直接把缺失值都给0
然后,对于性别’Sex’,我们将其二值化’male’为0,’female’为1
我们把’Embarked’也填补下缺失值,因为缺失值较少,所以我们直接给它填补上它的众数’S’,把’S’,’C’,’Q’定性转换为0,1,2,这样便于机器进行学习
最后,把’Cabin’这个与生存关系不重要而且有效数据极少的标签丢掉,再加上一个’Deceased’,代表的是是否遇难,这一步很重要,很重要,很重要!我在做的时候没加这个,后面网络的y的标签我也只设了1,训练出的模型跟没训练一样,所有的都是0。发现的时候,死的心都有了╥﹏╥…(希望不会有初学者和我犯一样的错误 ToT )
然后,我们再查看一下数据信息
这次信息就整齐多了
模型搭建
现在我们把数据的X,Y进行分离,这里我们只选取了6个标签作为X,如果想让结果尽可能准确,请读者自行完善。
这里,我们进行训练集和验证集的划分,在训练过程中,我们可以更好的观察训练情况,避免过拟合
做完以上工作,我们就可以开始搭建神经网络了,这里,我搭建的是一个简单两层的神经网络,激活函数使用的是线性整流函数Relu,并使用了交叉验证和Adam优化器(也可以使用梯度下降进行优化),设置学习率为0.001
下面开始训练,训练之前我先定义了个Saver,epoch为30次
我们把生成的提交文件在Kaggle官网上进行提交,Score为0.79425,效果还可以,不过还有很多需要改进的地方
领取专属 10元无门槛券
私享最新 技术干货