什么是归一化:
归一化就是把一组数(大于1)化为以1为最大值,0为最小值,其余数据按百分比计算的方法。如:1,2,3.,那归一化后就是:0,0.5,1
归一化步骤:
如:2,4,6
(1)找出一组数里的最小值和最大值,然后就算最大值和最小值的差值
min = 2; max = 6; r = max - min = 4
(2)数组中每个数都减去最小值
2,4,6 变成 0,2,4
(3)再除去差值r
0,2,4 变成 0,0.5,1 ,就得出归一化后的数组了
机器学习中归一化与标准化处理。
在大多数的机器学习算法和优化算法中,将特征值缩放到相同区间可以使得获取性能更好的模型。就梯度下降算法而言,例如有两个不同的特征,第一个特征的取值范围为1~10,第二个特征的取值范围为1~10000。在梯度下降算法中,代价函数为最小平方误差函数,所以在使用梯度下降算法的时候,算法会明显的偏向于第二个特征,因为它的取值范围更大。在比如,k近邻算法,它使用的是欧式距离,也会导致其偏向于第二个特征。对于决策树和随机森林以及XGboost算法而言,特征缩放对于它们没有什么影响。
python具体用法如下:归一化和归一化还原值(反归一化)
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
if __name__ == "__main__":
#读取葡萄酒数据集
data = pd.read_csv("G:/dataset/wine.csv")
#获取第二列Alcohol
x =data["Alcohol"]
#获取数据的基本情况
print(x.describe())
minMax = MinMaxScaler()
#将数据进行归一化
x_std = minMax.fit_transform(x)
#归一化还原
origin_data = minMax.inverse_transform(x_std )
print(x_std)
标准化(standardization)
标准化比归一化要更加实用,因为像逻辑斯蒂回归和支持向量机算法,刚开始训练的时候会将参数初始化为0或趋于0的随机极小值,如果是标准化的数据(均值为0,方差为1)对于它们而言,这更加容易利于权重的更新。将特征列标准化的计算公式如下:标准化和标准化还原。
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
from sklearn.preprocessing import StandardScaler
if __name__ == "__main__":
# 读取葡萄酒数据集
data = pd.read_csv("G:/dataset/wine.csv")
# 获取第二列Alcohol
x = data["Alcohol"]
std = StandardScaler()
#将x进行标准化
x_std = std.fit_transform(x)
#归一化还原
origin_data = std.inverse_transform(x_std )
print(x_std)