数据的特征预处理?(归一化)&(标准化)&(缺失值)

特征处理是什么:

  通过特定的统计方法(数学方法)数据转化成为算法要求的数据

sklearn特征处理API:

  sklearn.preprocessing

代码示例:  文末!

 

归一化:

 

 

   公式:       

   注意:作用于每一列,max为一列的最大值,min为一列的最小值,那么X''为最终结果,mx、mi分别为指定区间,默认mx为1,mi为0

 

 

 sklearn归一化API:

  sklearn.preprocessing.MinMaxScaler

 归一化总结:

  注意在特定场景下最大值与最小值是变化的,另外,最大值与最小值非常容易受到异常点的影响,所以这种方法鲁棒性较差,只适合传统精确小数据场景

 

标准化:

 

 

   公式:

 

 

 

 

 

 对于归一化来说,如果出现异常点,影响了最大值和最小值,那么结果显然会发生改变

 对于标准化来说,如果出现异常点,由于具有一定数据量,少量的异常点对于平均值的影响并不大,从而方差改变较小

sklearn标准化API:

  sklearn.preprocessing.StandardScaler

标准化总结:

  在已有样本足够多情况下比较稳定,适合现在嘈杂的大数据

 

缺失值:

 

 

 sklearn缺失值API:

  sklearn.preprocessing.imputer

 

代码示例:

 1 from sklearn.preprocessing import MinMaxScaler, StandardScaler, Imputer
 2 import numpy as np
 3 
 4 
 5 def mm():
 6     """归一化处理
 7     X' = (x-min)/(max-min)
 8     X'' = X'*(mx-mi)+mi
 9     """
10     m = MinMaxScaler(feature_range=(5,10))  # 默认范围为0-1
11     array = [[90,2,10,40],[60,4,15,45],[75,3,13,46]]
12     data = m.fit_transform(array)
13     print(data)
14 
15 def standard():
16     """标准化缩放
17     相比于归一化,标准化对于存在异常值而对结果的影响不大,适合大数据
18     而归一化,由于受异常点的影响,所以......
19     """
20     s = StandardScaler()
21     array = [[1,-1,3], [2,4,2], [4,6,-1]]
22     data = s.fit_transform(array)
23     print(data)
24 
25 def im():
26     """缺失值处理"""
27     im = Imputer(missing_values='NaN', strategy='mean', axis=0)  # nan 或 NaN都可以,固定写法,填补策略(平均值),按列填充
28     data = im.fit_transform([[1,2],[np.nan,3],[7,6]])
29     print(data)
30 
31 
32 if __name__ == '__main__':
33     mm()
34     standard()
35     im()

 

posted @ 2019-10-28 17:51  springionic  阅读(764)  评论(0编辑  收藏  举报