- 首先要明确有多少特征,哪些是连续的,哪些是类别的。
- 检查有没有缺失值,对确实的特征选择恰当方式进行弥补,使数据完整。
- 对连续的数值型特征进行标准化,使得均值为0,方差为1。
- 对类别型的特征进行one-hot编码。
- 将需要转换成类别型数据的连续型数据进行二值化。(分箱)
- 为防止过拟合或者其他原因,选择是否要将数据进行正则化。
- 在对数据进行初探之后发现效果不佳,可以尝试使用多项式方法,寻找非线性的关系。
- 根据实际问题分析是否需要对特征进行相应的函数转换。
标准化:sklearn.preprocessing.scale() 或者 sklearn.preprocessing.StandardScaler
数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间。在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。其中最典型的就是数据的归一化处理,即将数据统一映射到[0,1]区间上。
【最小-最大规范化(线性变换) 】y=((x-MinValue)/(MaxValue-MinValue))(new_MaxValue-new_MinValue)+new_minValue)
【Z-Score 零-均值规范化】或者去除均值和方差缩放。公式为:(X-mean)/std 计算时对每个属性/每列分别进行。将数据按期属性(按列进行)减去其均值,并处以其方差。得到的结果是,对于每个属性/每列来说所有数据都聚集在0附近,方差为1。
【小数定标规范化】通过移动X的小数位置来进行规范化。 y= x/10的j次方 (其中,j为使得Max(|y|) <1的最小整数)
【对数Logistic模式】新数据=1/(1+e^(-原数据))
【模糊量化模式】新数据=1/2+1/2sin[pi/(极大值-极小值)*(X-(极大值-极小值)/2)]
【batch normalization】
【归一化】目标是1 、把数变为[0,1]之间的小数:把数据映射到0~1范围之内处理,更加便捷快速,应该归到数字信号处理范畴之内。 2 、把有量纲表达式变为无量纲表达式:归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为纯量。常用的归一化方法: 1 线性转换 y=(x-MinValue)/(MaxValue-MinValue) ;2 对数函数转换: y=log10(x) ; 3 反余切函数转换 y=atan(x)*2/PI
正则化:Regularization
正则化的过程是将每个样本缩放到单位范数(每个样本的范数为1),如果后面要使用如二次型(点积)或者其它核方法计算两个样本之间的相似性这个方法会很有用。
注意:
标准化是为了方便数据的下一步处理,而进行的数据缩放等变换,并不是为了方便与其他数据一同处理或比较,比如数据经过零-均值标准化后,更利于使用标准正态分布的性质,进行处理;
归一化是为了消除不同数据之间的量纲,方便数据比较和共同处理,比如在神经网络中,归一化可以加快训练网络的收敛性;基于树的方法不需要进行特征的归一化,例如随机森林,bagging与boosting等方法。如果是基于参数的模型或者基于距离的模型,因为需要对参数或者距离进行计算,都需要进行归一化。
正则化而是利用先验知识,在处理过程中引入正则化因子(regulator),增加引导约束的作用,比如在逻辑回归中使用正则化,可有效降低过拟合的现象。