scikit-learn中的归一化、标准化处理

什么是归一化:

归一化就是把一组数(大于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)


 

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