是在特征抽取之后进行【也可以直接理解为异常值的处理】
参数(对谁处理):二位数组
特征预处理:对数据进行预处理,通过特定的统计方法(数学方法)将数据转换成算法要求的数据
大致可分为三类:数值类型数据,类别型数据,时间类型 【两种处理结果:前后特征值个数不变,特征值改变;前后特征值个数改变,特征值也改变
- 数值类型一般进行的是标准缩放【归一化,标准化】
- 类别型数据:one-hot编码
- 时间类型:时间的切片
sklearn特征处理的API: sklearn.preprocessing
sklearn.preprocessing.MinMaxscaler
- 归一化目的:使得一个特征对最总结果不会造成影响 缺点:如果存在异常点,异常点对最大值和最小值影响太大,导致最终结果不能用。当一个属性的值的最大值与最小值的差距太大,就会覆盖别的特征的效果,为了避免对最终结果的影响,所以要进行归一化;
- 标准化:通过对原始数据进行变换,把数据变换到均值为0,标准差为1范围内。
表转化API:sklearn.preprocessing.StandardScaler
比较:
对于归一化来说:如果出现异常点,影响了最大值和最小值,那么结果显然会发生改变
对于标准化来说:如果出现异常点,由于具有一定数量,少量的异常点对于平均值的影响并不大,从而方差改变较小。
标准化在将来的预处理中是用的最多的,因为在已有样本足够多的情况下比较稳定,适合现代嘈杂的大数据场景
3.缺失值的处理
通常在pandas重进行,df.dropna()删除, df.fillna() 填补 【平均值,中位数,以行或列进行,一般按行进行】
df.replace('?',np.nan) np.nan为float类型
参考:https://blog.csdn.net/weixin_38168620/article/details/79596798
sklearn中对缺失值处理的API:sklearn.proprocessing.Imputer