特征缩放 | 归一化和标准化(上)

什么是特征缩放:

  就是将所有数据映射到同一尺度。如:

  某训练集 x_train 为:

  

(x_trian)

  将其进行某种特征缩放之后,得到新的值:

  

      显然经过特征缩放之后,特征值变小了

为什么要进行特征缩放呢?

有些特征的值是有区间界限的,如年龄,体重。而有些特征的值是可以无限制增加,如计数值。

所以特征与特征之间数值的差距会对模型产生不良影响。如:

在该样本集中,由于量纲不同,模型受 ‘次数‘特征所主导。因此如果没有对数据进行预处理的话

有可能带来偏差,难以较好的反应特征之间的重要程度。其实还有利于优化的其他原因

特征缩放的分类:

(不止这两种,但常用的为标准化)

1.先看一下 归一化(min-max 缩放)

 通过归一化处理,将值映射到0-1之间的某个数值。

 公式:

  X(i)为某个特征值、X(min)为这个特征的所有特征值的最小值、X(max)为这个特征

  的所有特征值的最大值

  也就是将 (某个特征值减去特征最小值的差)除以 (特征最大值减去特征最小值的差)

  从而得到这个特征值归一化之后的数值。

   Python简单实现:

import numpy as np

def min_max_scaler(X):
    ‘‘‘归一化‘‘‘
    assert X.ndim == 2,‘必须为二维数组‘
    X = np.array(X,dtype=float)
    n_feature = X.shape[1]
    for n in range(n_feature):
        min_feature = np.min(X[:,n])
        max_feature = np.max(X[:,n])
        X[:, n] = (X[:,n] - min_feature) / (max_feature - min_feature)
    return X

x = np.random.randint(0,100,(25,4))
print(min_max_scaler(x))

‘‘‘

[[0.89247312 0.11494253 0.17857143 0.29347826]
[0.09677419 0.74712644 0.10714286 0.63043478]
[0. 0.87356322 0.95238095 0.67391304]

.......
[0.2688172 0.4137931 0.33333333 0.89130435]
[0.11827957 0.7816092 0.55952381 0.15217391]
[1. 0.57471264 0.70238095 0.45652174]
[0.16129032 1. 0.75 0.23913043]]

‘‘‘

  sklearn中对应API: from sklearn.preprocessing import MinMaxScaler

  

  

  

原文地址:https://www.cnblogs.com/qiutenglong/p/10956165.html

时间: 2024-10-09 14:45:51

特征缩放 | 归一化和标准化(上)的相关文章

第二节 数值型特征进行归一化或标准化处理

数值型特征处理:通过特定的统计方法将数据转换成算法要求的数据,归一化和标准化 # 归一化的计算公式决定了其对异常值很敏感,一旦出现异常值会导致鲁棒性较差,所以归一化只适合传统精确小数据场景 from sklearn.preprocessing import MinMaxScaler def mm(): # feature_range指定归一化后的数据范围,不指定就是0-1之间 mm = MinMaxScaler(feature_range=(2, 3)) # fit_transform接收数组

特征工程2:归一化与标准化

归一化与标准化属于特征预处理的范畴 · 特征预处理是什么? 通过特定的数学统计方法将数据转化为算法要求的数据: 特征预处理在scikit-learn中的模块是:sklearn.preprocessing 对于不同的数据类型,有不同的处理方式,三种常见的数据类型: 数值型 类别型 时间类型 · 这里我们先看数值型的预处理: 标准缩放:有两种常见方式,归一化和标准化. 在特征较多时,并且认为这些特征同等重要,或者算法模型涉及到距离计算时(比如K近邻),为了防止某些特征的值对算法产生的影响过大,需要将

为什么要对特征进行缩放(归一化)

在Andrew Ng的机器学习课程里面,讲到使用梯度下降的时候应当进行特征缩放(Feature Scaling).进行缩放后,多维特征将具有相近的尺度,这将帮助梯度下降算法更快地收敛. 为了解释为什么特征缩放会帮助梯度下降算法更快地收敛,Andrew给了两幅图来解释: Feature Scaling Idea: Make sure features are on a similar scale.E.g. 归一化前,代价函数关于参数??和??的关系等高线图可能如下图: 而如果进行了,归一化,那么其

机器学习经典模型简单使用及归一化(标准化)影响测试

俗话说的好,不动手就永远不知道该怎么做,上次一听说要做这个的时候人都懵了,听了几次似乎都摸不到门道,这次花了几天时间去写了写,总算是摸到了点门道. 实验 数据集 这次用到的数据集是跟火电厂有关的,都是匿名特征,数据量为20160*170,做到最后发现只根据时间顺序就能做的比较好. 归一化 先来讲讲归一化.归一化也称标准化,是数据挖掘的一项基础工作,使用归一化的原因大体如下 数据存在不同的评价指标,其量纲或量纲单位不同,处于不同的数量级.解决特征指标之间的可比性,经过归一化处理后,各指标处于同一数

机器学习中(Feature Scaling)特征缩放处理的matlab实现方式

在进行特征缩放的时候,其一般做法是(X-mu)/sigma mu:代表均值 sigma:代表标准差 在matlab中,函数mean可以求特征的均值,函数std可以求特征的标准差. 假设训练集为m,特征数量为n,特征矩阵为X,则X的size为 m*n. 则 mu = mean(X)返回值为一个1*n的向量,向量中每个值对应于每个特征的均值. 则 sigma = std(X) 返回值为一个1*n的向量,向量中每个值对应于每个特征的标准差. 为了进行特征缩放,我们需要使用matlab中另外一个函数re

梯度下降在实践I -特征缩放

我们可以通过使每个输入值在大致相同的范围内加快梯度下降速度.这是因为θ下降很快在小范围和在大范围很慢,所以将振荡不到最佳当变量很不平衡 防止这种情况的方法是修改输入变量的范围,使它们完全相同.理想的: 这些不是确切的要求,我们只是想加快速度.我们的目标是将所有输入变量大致放在其中一个范围内,或取一些. 有两种技术可以帮助我们进行特征缩放和均值归一化.特征缩放包括将输入值除以输入变量的最大值(即最大值减去最小值),从而使新范围仅为1.均值归一化包括从输入变量的值减去输入变量的平均值,从而使输入变量

ng机器学习视频笔记(三) ——线性回归的多变量、特征缩放、标准方程法

ng机器学习视频笔记(三) --线性回归的多变量.特征缩放.标准方程法 (转载请附上本文链接--linhxx) 一.多变量 当有n个特征值,m个变量时,h(x)= θ0+θ1x1+θ2x2-+θnxn,其中可以认为x0=1.因此,h(x)= θTx,其中θ是一维向量,θ=[θ0, θ1-θn] T,x也是一维向量,x=[x0,x1..xn] T,其中x0=1. 二.特征缩放(Feature Scaling) 特征缩放的目的,是为了让每个特征值在数量上更加接近,使得每个特征值的变化的影响相对比较"

python验证特征缩放前后结果

利用sklearn linear_model下的线性模型验证一下特征缩放前后结果是否一致 验证因变量y的缩放 import numpy as np from sklearn import linear_model x=[[1],[2],[3],[4],[5]] y=[100,200,300,400,500] y2=[] avg=np.mean(y) for i in range(len(x)): y2.append(y[i]/avg) clf=linear_model.LinearRegress

归一化和标准化的使用场景以及归一化和标准化有没有改变数据分布

具体讲解可以看这里: 特征工程中的「归一化」有什么作用? - 微调的回答 - 知乎 https://www.zhihu.com/question/20455227/answer/370658612 从这个答案我们知道,标准化和归一化在数据确定的条件下都是一种线性变化,线性变化有很优良的特征,比如数值排序不会改变. 我自己的理解是这样的,对于归一化,没有改变数据分布,对于标准化,做的事情就是使原来的分布改变为高斯分布,所有改变了数据分布 原文地址:https://www.cnblogs.com/l