机器学习特征工程之特征预处理
特征预处理是什么?
通过特定的统计方法(数学方法)讲数据转换成算法要求的数据。
数值型数据:
- 归一化
- 标准化
缺失值
类别型数据:one-hot编码
时间类型:时间的切分
特征选择的意义
在对数据进行异常值、缺失值、数据转换等处理后,我们需要从当前数据集中选出有意义的特征,然后输入到算法模型中进行训练。
对数据集进行特征选择主要基于以下几方面的考虑:
1.冗余的特征会影响阻碍模型找寻数据潜在的规律,若冗余的特征过多,还会造成维度容灾,占用大量的时间空间,使算法运行效率大打折扣。
2.去除不相关的特征会降低学习任务的难度,保留关键的特征更能直观的看出数据潜在的规律。
那么,该如何进行特征选择呢?通常,要从两方面考虑来选择特征:
1.特征是否具有发散性:
如果一个特征不发散,例如方差接近于0,也就是说样本在这个特征上基本上没有差异,这个特征对于样本的区分并没有什么用。
2.特征与目标的相关性:
如果一个特征不发散,例如方差接近于0,也就是说样本在这个特征上基本上没有差异,这个特征对于样本的区分并没有什么用。
根据特征选择的标准,又能分为filter、wrapper、embedded三种方法。
归一化
Scikit-learn归一化处理API:sklearn。preprocession.MinMaxScaler
归一化步骤:
1.实例化MinMaxScalar
2.通过fit_transform转换
归一化总结
在特定场景下最大值和最小值是变化的,另外,最大值个最小值非常容易受异常点影响,所以归一化方法的稳定性较差,只适合传统精确小数据场景。
标准化
特点:通过对原始数据进行变换把数据变化到均值为0,标准差为1范围内。
结合归一化来谈标准化
大多数使用标准化。
标准化API:scikit-learn.preprocessing.StandardScaler
目的:缩放数据。
StandardScaler语法
标准化步骤:
1.实例化StandardScaler
2.通过fit_transform转换