scikit-learn数据预处理,对特征进行归一化和标准化

一、为什么需要进行特征缩放?


因为对于大多数的机器学习算法和优化算法来说,将特征值缩放到相同区间可以使得获取性能更好的模型。就梯度下降算法而言,例如有两个不同的特征,第一个特征的取值范围为1~10,第二个特征的取值范围为1~10000。在梯度下降算法中,代价函数为最小平方误差函数,所以在使用梯度下降算法的时候,算法会明显的偏向于第二个特征,因为它的取值范围更大。在比如,k近邻算法,它使用的是欧式距离,也会导致其偏向于第二个特征。对于决策树和随机森林以及XGboost算法而言,特征缩放对于它们没有什么影响。

二、常用的特征算法缩放有哪些?


常用的特征缩放算法有两种,归一化(normalization)和标准化(standardization)。归一化算法是通过特征的最大最小值将特征缩放到[0,1]区间范围内,而多于许多机器学习算法,标准化也许会更好,标准化是通过特征的平均值和标准差将特征缩放成一个标准的正态分布,均值为0,方差为1。接下来我们就通过scikit-learn提供的方法对于葡萄酒的数据集进行标准化处理。

三、归一化(normalization)


归一化是利用特征的最大最小值,将特征的值缩放到[0,1]区间,对于每一列的特征使用min-max函数进行缩放,计算公式如下

 

利用UCI提供的葡萄酒数据集,一个有178条数据,每一条数据有13个样本

数据下载地址:https://download.csdn.net/download/sinat_29957455/10274582

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)
    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)
    print(x_std)

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值