一、特征处理是什么
通过特定的统计方法(数学方法),将数据转换成算法要求的数据
1、数值型数据
标准缩放:
(1)归一化
(2)标准化
(3)缺失值
2、类别型数据:one-hot编码
3、时间类型:时间的切分
4、预处理API:sklearn.preprocessing
二、归一化
- 目的:使得某个特征对最终结果不会造成更大的影响
- 缺点:最大、最小值非常容易受异常点影响
- 特点:通过对原始数据进行变换把数据映射到[0,1]之间
- 公式:x’ = (x - min) / (max - min) x’’ = x’ * (mx - mi) + mi
注:作用于每一列,max、min为每一列的最大、最小值;x’'为最终结果,mx、mi分别为指定区间值——默认mx=1,mi=0。
- 归一化API:sklearn.preprocessing.MinMaxScaler
MinMaxScaler(feature_range=(0,1)...)
每个特征缩放的范围(默认是[0,1])
MinMaxScaler.fit_transform(X)
x:numpy array格式的数据[n_samples, n_features]
返回值:转换后的形式相同的arrayIn [1]:from sklearn.preprocessing import MinMaxScaler mm = MinMaxScaler() data = mm.fit_transform([[90,2,10,40],[60,4,15,45],[75,3,13,46]]) data Out [1]:array([[1. , 0. , 0. , 0. ], [0. , 1. , 1. , 0.83333333], [0.5 , 0.5 , 0.6 , 1. ]])
三、标准化
- 对于标准化来说,少量的异常点对平均值的影响不大。在样本数量较多的情况下比较稳定,适合现代嘈杂大数据场景。
- 特点:通过对原始数据进行变换把数据变换到均值为0,标准差为1的范围
- 公式:x’ = (x - mean) / thegma
-作用于每一列,mean为平均值,thegma为标准差。
-方差var = ( (x1 - mean)2 + (x2 - mean)2 + … ) / n(每个特征的样本数)
-thegma = aqrt(var)
-其中,方差(考量数据的稳定性)
In [1]:from sklearn.preprocessing import StandardScaler
std = StandardScaler()
data = std.fit_transform([[1.,-1.,3.],[2.,4.,2.],[4.,6.,-1.]])
data
Out [1]:array([[-1.06904497, -1.35873244, 0.98058068],
[-0.26726124, 0.33968311, 0.39223227],
[ 1.33630621, 1.01904933, -1.37281295]])
三、缺失值
1、删除
2、插补:平均值、中位数等
In [1]:from sklearn.preprocessing import Imputer
im = Imputer(missing_values='NaN', strategy='mean', axis=0)
data = im.fit_transform([2, 1], [np.nan, 3], [7, 6])
data
Out [1]:array([[2. , 1. ],
[4.5, 3. ],
[7. , 6. ]])