机器学习之03数据特征预处理

一、特征处理是什么

通过特定的统计方法(数学方法),将数据转换成算法要求的数据
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]
返回值:转换后的形式相同的array

In [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. ]])	

你可能感兴趣的:(机器学习)