数据预处理

## 数据预处理
相关参考链接:
1.[Titanic总结](https://blog.csdn.net/han_xiaoyang/article/details/49797143)
2.[别人Titanic的总结](https://blog.csdn.net/u013240812/article/details/78289466)
3.[关于使用sklearn进行数据预处理 —— 归一化/标准化/正则化](https://www.cnblogs.com/chaosimple/p/4153167.html)
### 1.数据缺失
  通常遇到缺值的情况,我们会有几种常见的处理方式:
1.如果缺值的样本占总数比例极高,我们可能就直接舍弃了,作为特征加入的话,可能反倒带入noise,影响最后的结果了
2.如果缺值的样本适中,而该属性非连续值特征属性(比如说类目属性),那就把NaN作为一个新类别,加到类别特征中
3.如果缺值的样本适中,而该属性为连续值特征属性,有时候我们会考虑给定一个step(比如这里的age,我们可以考虑每隔2/3岁为一个步长),然后把它离散化,之后把NaN作为一个type加到属性类目中。
  有些情况下,缺失的值个数并不是特别多,那我们也可以试着根据已有的值,拟合一下数据,补充上。
  我们这里用scikit-learn中的RandomForest来拟合一下缺失的年龄数据

### 2.将属性都转成数值型属性
  以Cabin为例,原本一个属性维度,因为其取值可以是[‘yes’,’no’],而将其平展开为’Cabin_yes’,’Cabin_no’两个属性:
  原本Cabin取值为yes的,在此处的”Cabin_yes”下取值为1,在”Cabin_no”下取值为0
  原本Cabin取值为no的,在此处的”Cabin_yes”下取值为0,在”Cabin_no”下取值为1

  我们使用pandas的”get_dummies”来完成这个工作,并拼接在原来的”data_train”之上,如下所示。

```
dummies_Cabin = pd.get_dummies(data_train['Cabin'], prefix= 'Cabin')

dummies_Embarked = pd.get_dummies(data_train['Embarked'], prefix= 'Embarked')

dummies_Sex = pd.get_dummies(data_train['Sex'], prefix= 'Sex')

dummies_Pclass = pd.get_dummies(data_train['Pclass'], prefix= 'Pclass')

df = pd.concat([data_train, dummies_Cabin, dummies_Embarked, dummies_Sex, dummies_Pclass], axis=1)
df.drop(['Pclass', 'Name', 'Sex', 'Ticket', 'Cabin', 'Embarked'], axis=1, inplace=True)
df

---------------------

 


![在这里插入图片描述](https://img-blog.csdn.net/20180926203932312?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIyNzAzMjA1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

## 3.scaling:将一些变化幅度较大的特征化到[-1,1]之内。

posted @ 2019-03-12 23:54  sharryling  阅读(175)  评论(0编辑  收藏  举报