独热编码onehot
pd.get_dummies
数据预处理
train_df.info()看数据的信息,可以看到有哪几个有缺失值
列举存活率和性别,等级,年龄之间的关系,再将两个特征联系起来
数据处理
首先我们需要丢弃掉没有用的特征,在这个项目里,特征Ticket和Cabin,Name,PassengerId都可以被丢弃。
需要注意的是,在丢弃特征的时候,训练集和测试集的特征应该同时被丢弃。
接下来,我们需要将性别转换为数值,male转为1,female转为0。
由于特征SibSp和Parch分别表示兄弟姐妹及配偶和父母子女的数量,所以我们也可以将SibSp和Parch组合成一个名为FamilySize的合成特征,它表示每个成员的船上家庭成员总数。
接下来看一下新特征和乘客幸存率的关系
可以看到在FamSize在[0,3]时幸存率是比较高的,当FamSize>3时,幸存率就开始下降了。所以我们不防再新增一个特征FamTag,当FamSize>3时,另其为0,小于等于3时,另其为1
接下来看一下改变后的效果
然后我们丢弃掉SibSp、Parch和FamSize这3个特征
Embarked只有两个缺失值,统计出现的频率,用频率最高的两个来代替
将Embarked的值转换为数值型
对age查看分布,用中位数来填充
由于age,fare都是连续值,将两个特征划分为8、4个区间,划分区间为新的特征,分别是’AgeBand’和’FareBand’。
根据区间的不同,区间分别用数字来代替,将连续值离散化,丢弃新增的两个区间
Binning通过观察“邻居”(即周围的值)将连续数据离散化。处理fare
Scaling可以将一个很大范围的数值映射到一个很小的范围(通常是-1 - 1,或则是0 - 1),处理age
特征工程
对数据进行特征工程,也就是从各项参数中提取出对输出结果有或大或小的影响的特征,将这些特征作为训练模型的依据。
当qualitative variable是一些频繁出现的几个独立变量时,Dummy Variables比较适合使用。(独热编码)
dummy不好处理Cabin(船舱号)这种标称属性,因为他出现的变量比较多。所以Pandas有一个方法叫做factorize(),它可以创建一些数字,来表示类别变量,对每一个类别映射一个ID,这种映射最后只生成一个特征,不像dummy那样生成多个特征。
fare按照一二三等舱各自的均价来填充:
常见的有两种对年龄的填充方式:一种是根据Title中的称呼,如Mr,Master、Miss等称呼不同类别的人的平均年龄来填充;一种是综合几项如Sex、Title、Pclass等其他没有缺失值的项,使用机器学习算法来预测Age。