1.数据标准化含义:
将数据的数值特征转换成一些标准的格式,使其与其他属性处于相同的范围内,此过程叫标准化(Normalization)
2.两种方式
有两种常用的标准化技术:
2.1Min-Max Normalization
最大最小标准化(Min-Max Normalization):这个过程使得特征的范围在[0,1]内。首先计算每个数值特征的最小值和最大值,然后对特征的每个值均进行以下变换。X是数据,min和max分别对应数据里面的最值。
一维数据的代码实现:
from sklearn import preprocessing
import pandas
data={'price':[492,286,487,519,541,429]}#用字典来存放数据
price_frame=pandas.DataFrame(data)#把字典类型转化为dataframe对象
min_max_normalizer=preprocessing.MinMaxScaler(feature_range=(0,1))
#feature_range设置最大最小变换值,默认(0,1)
scaled_data=min_max_normalizer.fit_transform(price_frame)
#将数据缩放(映射)到设置固定区间
price_frame_normalized=pandas.DataFrame(scaled_data)
#将变换后的数据转换为dataframe对象
print(price_frame_normalized)
二维数据的代码实现:
data = np.array([[ -3., 5., 15 ],
[ 0., 6., 14 ],
[ 6., 3., 11 ]]) #3*3
print(data)
price_frame=pandas.DataFrame(data)#把字典类型转化为dataframe对象
min_max_normalizer=preprocessing.MinMaxScaler(feature_range=(0,1))
#feature_range设置最大最小变换值,默认(0,1)
scaled_data=min_max_normalizer.fit_transform(price_frame)
#将数据缩放(映射)到设置固定区间
price_frame_normalized=pandas.DataFrame(scaled_data)
#将变换后的数据转换为dataframe对象
print(price_frame_normalized)
可以看出结果是按照每一列的数据来算的而不是所有数据一起
[[-3. 5. 15.]
[ 0. 6. 14.]
[ 6. 3. 11.]]
0 1 2
0 0.000000 0.666667 1.00
1 0.333333 1.000000 0.75
2 1.000000 0.000000 0.00
2.2Z-Score Normalization
Z-分数标准化(Z-Score Normalization):当数据包含离群值时,最大最小标准化并不是首选。在存在离群值的情况下,随着数据范围的增加,数值将不断接近零。Z-Score常用于标准化技术。Z-Score遵循统计学原理,使数据平均值为0,标准差为1。
一维数据的代码实现:
from sklearn import preprocessing
import pandas
data={'price':[492,286,487,519,541,429]}#用字典来存放数据
price_frame=pandas.DataFrame(data)#把字典类型转化为dataframe对象
normalizer=preprocessing.scale(price_frame)
#沿着某个轴标准化数据集,以均值为中心,以分量为单位方差
price_frame_normalized=pandas.DataFrame(normalizer,columns=['price'])
#将标准化的数据转换为dataframe对象,将列名改为price
print(price_frame_normalized)
ref:参看博客