当前位置:   article > 正文

数据标准化 数据归一化 数据预处理 data normalization / scale_数据归元化

数据归元化

一、数据归一化的好处:

数据标准化和归一化的区别和联系:
在进行处理数据的时候,标准化的方法是比较多的,其中数据归一化是一种常见的数据的标准化,只不过标准化只是将数据进行规范到一个范围之内,对于数据的归一化来说,是将数据规范到0到1之间或者是-1到1之间。

在使用机器学习或者深度学习的模型的时候,数据预处理的阶段是十分重要的,我们在进行处理的时候,包括缺失值处理、异常值处理、重复值处理等很多方面,当然,数据标准化也是一个很重要的方面,数据标准化即将数据标准化到0到1之间,或者是-1到1之间。对于深度学习来说,这样可以使我们的数据和神经网络的激活函数处理之后的数据的取值的范围对应。
另外,关于归一化的好处,可以参考这个博客,讲的比较清楚:
http://blog.csdn.net/pipisorry/article/details/52247379

二、数据归一化的方法:

1、 最小最大值标准化 MinMaxScale,将数据规范到0-1之间

原理:
假设已知样本中的data为Xi,其中最小值和最大值分别为min和max,则在进行计算的时候,我们需要使用X_std =(Xi-min)/(max-min), 结果 = X_std* (max - min) + min来进行计算标准化之后的结果。
代码:
MinMaxScaler可以参考:
http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.MinMaxScaler.html#sklearn.preprocessing.MinMaxScaler
官网上的例子:

>>> from sklearn.preprocessing import MinMaxScaler
>>>
>>> data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]
>>> scaler = MinMaxScaler()
>>> print(scaler.fit(data))
MinMaxScaler(copy=True, feature_range=(0, 1))
>>> print(scaler.data_max_)
[  1.  18.]
>>> print(scaler.transform(data))
[[ 0.    0.  ]
 [ 0.25  0.25]
 [ 0.5   0.5 ]
 [ 1.    1.  ]]
>>> print(scaler.transform([[2, 2]]))
[[ 1.5  0. ]]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

2、MaxAbsScaler(绝对值最大标准化) 将数据规范到-1到1之间

原理: 和上面的原理类似,但是改为除以最大值来进行计算。
works in a very similar fashion, but scales in a way that the training data lies within the range [-1, 1] by dividing through the largest maximum value in each feature. It is meant for data that is already centered at zero or sparse data.(来自官网,代码部分会给出链接)
代码:
链接:
http://scikit-learn.org/stable/modules/preprocessing.html#standardization-or-mean-removal-and-variance-scaling

>>> X_train = np.array([[ 1., -1.,  2.],
...                     [ 2.,  0.,  0.],
...                     [ 0.,  1., -1.]])
...
>>> max_abs_scaler = preprocessing.MaxAbsScaler()
>>> X_train_maxabs = max_abs_scaler.fit_transform(X_train)
>>> X_train_maxabs                # doctest +NORMALIZE_WHITESPACE^
array([[ 0.5, -1. ,  1. ],
       [ 1. ,  0. ,  0. ],
       [ 0. ,  1. , -0.5]])
>>> X_test = np.array([[ -3., -1.,  4.]])
>>> X_test_maxabs = max_abs_scaler.transform(X_test)
>>> X_test_maxabs                 
array([[-1.5, -1. ,  2. ]])
>>> max_abs_scaler.scale_         
array([ 2.,  1.,  2.])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

三、标准化

z-score 标准化 得到的结果是符合正态分布的

原理:
在进行计算的时候,我们是需要首先计算data的均值X_mean以及标准差X_std,然后需要进行计算
(Xi-X_mean)/X_std得到最终的计算的结果。
代码:
链接:
http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.StandardScaler.html

>>> from sklearn.preprocessing import StandardScaler
>>>
>>> data = [[0, 0], [0, 0], [1, 1], [1, 1]]
>>> scaler = StandardScaler()
>>> print(scaler.fit(data))
StandardScaler(copy=True, with_mean=True, with_std=True)
>>> print(scaler.mean_)
[ 0.5  0.5]
>>> print(scaler.transform(data))
[[-1. -1.]
 [-1. -1.]
 [ 1.  1.]
 [ 1.  1.]]
>>> print(scaler.transform([[2, 2]]))
[[ 3.  3.]]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/174539
推荐阅读
相关标签
  

闽ICP备14008679号