Titanic: Machine Learning from Disaster
对实验用的数据的认识,数据中的特殊点/离群点的分析和处理,特征工程(feature engineering)很重要。注意模型融合(model ensemble)。
机器学习系列(3)_逻辑回归应用之Kaggle泰坦尼克之灾
训练数据中通常遇到缺值的情况,会有几种常见的处理方式:
1.如果缺值的样本占总数比例极高,可能就直接舍弃了,作为特征加入的话,可能反倒带入noise,影响最后的结果了;
2.如果缺值的样本适中,而该属性非连续值特征属性(比如说类目属性),那就把NaN作为一个新类别,加到类别特征中;
3.如果缺值的样本适中,而该属性为连续值特征属性,有时候会考虑给定一个step(比如这里的age,可以考虑每隔2/3岁为一个步长),然后把它离散化,之后把NaN作为一个type加到属性类目中;
4.有些情况下,缺失的值个数并不是特别多,那也可以试着根据已有的值,拟合一下数据,补充上。
因为逻辑回归建模时,需要输入的特征都是数值型特征,通常会先对类目型的特征因子化。什么叫做因子化呢?举个例子:以Cabin为例,原本一个属性维度,因为其取值可以是[‘yes’,‘no’],而将其平展开为’Cabin_yes’,'Cabin_no’两个属性。原本Cabin取值为yes的,在此处的"Cabin_yes"下取值为1,在"Cabin_no"下取值为0;原本Cabin取值为no的,在此处的"Cabin_yes"下取值为0,在"Cabin_no"下取值为1。pandas提供对one-hot编码的函数是:pd.get_dummies()。交叉验证cross validation:把train.csv分成两部分,一部分用于训练需要的模型,另外一部分数据上看预测算法的效果。可以用scikit-learn的cross_validation来帮忙完成小数据集上的这个工作。用scikit-learn里面的learning_curve来帮忙分辨模型的状态。可以不要用全部的训练集,每次取训练集的一个subset,做训练,这样,虽然用的是同一个机器学习算法,但是得到的模型却是不一样的;同时,因为没有任何一份子数据集是全的,因此即使出现过拟合,也是在子训练集上出现过拟合,而不是全体数据上,这样做一个融合,可能对最后的结果有一定的帮助。
如果觉得《Titanic: Machine Learning from Disaster-kaggle入门赛-学习笔记》对你有帮助,请点赞、收藏,并留下你的观点哦!