精华内容
下载资源
问答
  • 2020-02-11 07:11:40

    常用的三种数据规范化处理方法:

      常用的数据规范化处理主要有Min-max规范化、Z-Score规范化和小数定标规范化。下面简要介绍下三种数据规范化方法,并用python的机器学习库SciKit-Learn来实现数据变化。

    Min-max 规范化

      Min-max 规范化方法是将原始数据变换到[0,1]的空间中用公式表示就是:

    新数值 =(原数值 - 极小值)/(极大值 - 极小值)。

      sciKit-Learn中的MinMaxScaler函数可以将原始数据投射到指定空间[min,max],默认情况下[min,max]是[0,1].运行代码:

    from sklearn import preprocessing
    import numpy as np
    # 初始化数据,每一行表示一个样本,每一列表示一个特征
    x = np.array([[ 0., -3.,  1.],
                  [ 3.,  1.,  2.],
                  [ 0.,  1., -1.]])
    # 将数据进行[0,1]规范化
    min_max_scaler = preprocessing.MinMaxScaler()
    minmax_x = min_max_scaler.fit_transform(x)
    print (minmax_x)
    

    运行结果:

    
    [[0.         0.         0.66666667]
     [1.         1.         1.        ]
     [0.         1.         0.        ]]
    

    Z-Score 规范化

      Z-Score规范化可以直接将数据转化为正态分布。
    Z-Score :

    新数值 =(原数值 - 均值)/ 标准差。

      Z-Score 的优点是算法简单,不受数据量级影响,结果易于比较。不足在于,它需要数据整体的平均值和方差,而且结果没有实际意义,只是用于比较。

      SciKit-Learn库中的preprocessing.scale()函数可以直接将给定的数据进行Z-Score规范化。运行代码:

    from sklearn import preprocessing
    import numpy as np
    # 初始化数据
    x = np.array([[ 0., -3.,  1.],
                  [ 3.,  1.,  2.],
                  [ 0.,  1., -1.]])
    # 将数据进行Z-Score规范化
    scaled_x = preprocessing.scale(x)
    print (scaled_x)
    

    运行结果:

    [[-0.70710678 -1.41421356  0.26726124]
     [ 1.41421356  0.70710678  1.06904497]
     [-0.70710678  0.70710678 -1.33630621]]
    

    小数定标规范化

      小数定标规范化就是通过移动小数点的位置来进行规范化。小数点移动多少位取决于属性 A 的取值中的最大绝对值。
      比如属性 A 的取值范围是 -999 到 88,那么最大绝对值为 999,小数点就会移动 3 位,即新数值 = 原数值 /1000。那么 A 的取值范围就被规范化为 -0.999 到 0.088。

     通过NumPy库计算小数点位数。运行代码:

    from sklearn import preprocessing
    import numpy as np
    # 初始化数据
    x = np.array([[ 0., -3.,  1.],
                  [ 3.,  1.,  2.],
                  [ 0.,  1., -1.]])
    # 小数定标规范化
    j = np.ceil(np.log10(np.max(abs(x))))
    scaled_x = x/(10**j)
    print (scaled_x)
    

    运行结果:

    
    [[ 0.  -0.3  0.1]
     [ 0.3  0.1  0.2]
     [ 0.   0.1 -0.1]]
    
    更多相关内容
  • 一、数据规范化的原理 数据规范化处理是数据挖掘的一项基础工作。不同的属性变量往往具有不同的取值范围,数值间的差别可能很大,不进行处理可能会影响到数据分析的结果。为了消除指标之间由于取值范围带来的差异,...

    本文代码均已在 MATLAB R2019b 测试通过,如有错误,欢迎指正。

    一、数据规范化的原理

    数据规范化处理是数据挖掘的一项基础工作。不同的属性变量往往具有不同的取值范围,数值间的差别可能很大,不进行处理可能会影响到数据分析的结果。为了消除指标之间由于取值范围带来的差异,需要进行标准化处理。将数据按照比例进行缩放,使之落入一个特定的区域,便于进行综合分析。

    (1)最小-最大规范化
    假定min和max分别为属性A的最小值和最大值,则通过下面公式将属性A上的值v映射到区间[new_min, new_max]中的v’:
    v ′ = v − m i n m a x − m i n ( n e w _ m a x − n e w _ m i n ) + n e w _ m i n v'=\frac {v-min} {max-min}(new\_max-new\_min)+new\_min v=maxminvmin(new_maxnew_min)+new_min

    (2)零-均值规范化
    将属性A的值根据其平均值mean和标准差std进行规范化:
    v ′ = v − m e a n s t d v'=\frac {v-mean} {std} v=stdvmean

    (3)小数定标规范化
    通过移动属性A的小数点位置进行规范化,小数点的移动依赖于A的最大绝对值:
    v ′ = v 1 0 j v'=\frac {v} {10^j} v=10jv

    其中,j是使 Max(| v’ |)<1的最小整数。

    二、Matlab代码实现

    1.最小-最大规范化

    Matlab的代码可以写简单一点,不用像C++那样写两个for循环。

    • mi=min(A)默认求矩阵A每列的最小值,返回一个行向量mi。
    • repmat(mi,n,1)重复mi,重复行n次,重复列1次,从而形成与A相同大小的矩阵。
    • ./可直接将两个矩阵所有相同位置的元素相除(不用写两个for循环)。
    clear;clc;
    
    %% 数据存入A
    A=[78 521 602 2863	
    144 -600 -521 2245	
    95 -457 468 -1283
    69 596 695 1054
    190 527 691 2051
    101 403 470 2487
    146 413 435 2571];
    
    fprintf("原数据:"); A
    
    new=input("请输入需要映射到的新区间。输入格式示例:[0,1]\n");
    new_mi=new(1);
    new_mx=new(2);
    
    [n,m]=size(A);
    mi=min(A); % 求出A每列的最小值,形成行向量mi(不用for循环)
    mx=max(A); % 求出A每列的最大值,形成行向量mx
    mi=repmat(mi,n,1); % 将矩阵mi重复,行n次,列1次,调整到与A相同大小(之后就不用for循环了)
    mx=repmat(mx,n,1); % 将矩阵mx重复,行n次,列1次,调整到与A相同大小
    B=(A-mi)./(mx-mi)*(new_mx-new_mi)+new_mi; % ./的含义是将两个矩阵所有相同位置的元素相除
    
    fprintf("\n经过最小最大规范化后:"); B
    

    Matlab也有现成的mapminmax()函数直接实现最小-最大规范化:

    B1=mapminmax(A')'; % 每列规范化到[-1,1]
    B2=mapminmax(A',0,1)'; % 每列规范化到[0,1]
    

    解释一下:

    • mapminmax()函数,默认按行最小最大规范化到[-1,1]。
    • 由于默认是按行,如果要按列规范化,传参时需将A进行转置,将mapminmax()函数返回的结果再转置一下即可。
    • B2=mapminmax(A',0,1)',后面加上两个参数表示新区间的左右端点。

    代码运行结果

    输入的新区间范围为[0,1]:

    原数据:
    A =
    
              78         521         602        2863
             144        -600        -521        2245
              95        -457         468       -1283
              69         596         695        1054
             190         527         691        2051
             101         403         470        2487
             146         413         435        2571
    
    请输入需要映射到的新区间。输入格式示例:[0,1]
    [0,1]
    
    经过最小最大规范化后:
    B =
    
        0.0744    0.9373    0.9235    1.0000
        0.6198         0         0    0.8509
        0.2149    0.1196    0.8133         0
             0    1.0000    1.0000    0.5637
        1.0000    0.9423    0.9967    0.8041
        0.2645    0.8386    0.8150    0.9093
        0.6364    0.8470    0.7862    0.9296
    

    2.零-均值规范化

    clear;clc;
    
    %% 数据存入A
    A=[78 521 602 2863	
    144 -600 -521 2245	
    95 -457 468 -1283
    69 596 695 1054
    190 527 691 2051
    101 403 470 2487
    146 413 435 2571];
    
    A_mean=mean(A); % mean求的是每列的均值
    A_std=std(A); % std求的是每列的标准差
    [n,m]=size(A);
    B=(A-repmat(A_mean,n,1))./repmat(A_std,n,1);
    
    fprintf("原数据:"); A
    fprintf("经过零均值规范化后:"); B
    

    Matlab也有现成的zscore()函数直接实现零-均值规范化:

    [B,A_mean,A_std]=zscore(A); % 返回按列进行零均值规范化后的矩阵、每列均值、每列标准差
    B=zscore(A); % 只返回按列进行零均值规范化后的矩阵
    

    代码运行结果

    原数据:
    A =
    
              78         521         602        2863
             144        -600        -521        2245
              95        -457         468       -1283
              69         596         695        1054
             190         527         691        2051
             101         403         470        2487
             146         413         435        2571
    
    经过零均值规范化后:
    B =
    
       -0.9054    0.6359    0.4645    0.7981
        0.6047   -1.5877   -2.1932    0.3694
       -0.5164   -1.3040    0.1474   -2.0783
       -1.1113    0.7846    0.6846   -0.4569
        1.6571    0.6478    0.6752    0.2348
       -0.3791    0.4018    0.1521    0.5373
        0.6504    0.4216    0.0693    0.5956
    

    3.小数定标规范化

    clear;clc;
    
    %% 数据存入A
    A=[78 521 602 2863	
    144 -600 -521 2245	
    95 -457 468 -1283
    69 596 695 1054
    190 527 691 2051
    101 403 470 2487
    146 413 435 2571];
    
    mx=max(abs(A)); % 求每列绝对值最大的数mx
    len=floor(log10(mx))+1; % 求绝对值最大的数的位数len
    B=A./(10.^len); % 按列将A中每个元素除以相同的10^len
    
    fprintf("原数据:"); A
    fprintf("经过小数定标规范化后:"); B
    

    代码运行结果

    原数据:
    A =
    
              78         521         602        2863
             144        -600        -521        2245
              95        -457         468       -1283
              69         596         695        1054
             190         527         691        2051
             101         403         470        2487
             146         413         435        2571
    
    经过小数定标规范化后:
    B =
    
        0.0780    0.5210    0.6020    0.2863
        0.1440   -0.6000   -0.5210    0.2245
        0.0950   -0.4570    0.4680   -0.1283
        0.0690    0.5960    0.6950    0.1054
        0.1900    0.5270    0.6910    0.2051
        0.1010    0.4030    0.4700    0.2487
        0.1460    0.4130    0.4350    0.2571
    
    展开全文
  • 数据分析-数据规范化的一些方法

    万次阅读 2021-06-27 12:57:50
    数据规范化的几种方法 1. Min-Max规范化 from sklearn import preprocessing import numpy as np #初始化数据,每一行表示一个样本,每一列表示为一个特征 x = np.array([ [0.,-3.,1.], [3.,1.,2.], [0.,1.,-1.]...

    数据规范化的几种方法

    1. Min-Max规范化

    image-20210626202001778

    from sklearn import preprocessing
    import numpy as np
    #初始化数据,每一行表示一个样本,每一列表示为一个特征
    x = np.array([
        [0.,-3.,1.],
        [3.,1.,2.],
        [0.,1.,-1.]
    ])
    #将数据进行[0,1]规范化
    min_max_scaler = preprocessing.MinMaxScaler()
    minmax_x = min_max_scaler.fit_transform(x)
    print(minmax_x)
    

    2.Z-Score规范化

    image-20210626202121265

    from sklearn import preprocessing
    import numpy as np
    
    #初始化数据,每一行表示一个样本,每一列表示为一个特征
    x = np.array([
        [0.,-3.,1.],
        [3.,1.,2.],
        [0.,1.,-1.]
    ])
    scaled_x = preprocessing.scale(x)
    print(scaled_x)
    

    3.小数定标规范化

    image-20210626202153567

    from sklearn import preprocessing
    import numpy as np
    #初始化数据,每一行表示一个样本,每一列表示为一个特征
    x = np.array([
        [0.,-3.,1.],
        [3.,1.,2.],
        [0.,1.,-1.]
    ])
    #小数定标规范化
    j = np.ceil(np.log10(np.max(abs(x))))
    scaled_X = x/(10**j)
    print(scaled_X)
    

    p.max(abs(x))))
    scaled_X = x/(10**j)
    print(scaled_X)

    
    
    展开全文
  • 数据规范化处理 在拿到数据进行建模之前,我们需要将数据进行初步处理,例如通过据平滑、数据聚集、数据概化和规范化等方式将数据转换成适用于数据挖掘的形式。本文只介绍min-max标准化、Z-score标准化方法。 1. Min...

    数据规范化处理

    在拿到数据进行建模之前,我们需要将数据进行初步处理,例如通过据平滑、数据聚集、数据概化和规范化等方式将数据转换成适用于数据挖掘的形式。本文只介绍min-max标准化、Z-score标准化方法。

    1. Min-max 规范化

    定义:

    Min-max 也叫离差标准化,是对原始数据的线性变换,使结果落到[0,1]区间。
    用公式表示就是:

    1、其中max为样本数据的最大值,min为样本数据的最小值。
    2、这种方法有一个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义。

    在这里插入图片描述

    代码:

    Python中在 SciKit-Learn 里有个函数 MinMaxScaler 是专门做这个的

    #引入库
    from sklearn import preprocessing
    import numpy as np
    # 初始化数据,每一行表示一个样本,每一列表示一个特征
    x = np.array([[ 0., -3.,  1.],
                  [ 3.,  1.,  2.],
                  [ 0.,  1., -1.]])
    # 将数据进行[0,1]规范化
    min_max_scaler = preprocessing.MinMaxScaler()
    minmax_x = min_max_scaler.fit_transform(x)
    print minmax_x

    2、Z-Score 规范化

    定义:

    最常见的标准化方法就是Z标准化;也是SPSS中最为常用的标准化方法,也叫标准差标准化。
    Z-Score 的优点是算法简单,不受数据量级影响,结果易于比较。不足在于,它需要数据整体的平均值和方差,而且结果没有实际意义,只是用于比较。
    在这里插入图片描述

    步骤如下:
    1、求出各变量(指标)的算术平均值(数学期望)xi和标准差si ;
    2、进行标准化处理:
    zij=(xij-xi)/si
    其中:zij为标准化后的变量值;xij为实际变量值。
    3.将逆指标前的正负号对调。准化后的变量值围绕0上下波动,大于0说明高于平均水平,小于0说明低于平均水平。
    如何改变文本的样式

    代码:

    在 SciKit-Learn 库中使用 preprocessing.scale() 函数,可以直接将给定数据进行 Z-Score 规范化。

    from sklearn import preprocessing
    import numpy as np
    # 初始化数据
    x = np.array([[ 0., -3.,  1.],
                  [ 3.,  1.,  2.],
                  [ 0.,  1., -1.]])
    # 将数据进行Z-Score规范化
    scaled_x = preprocessing.scale(x)
    print scaled_x
    展开全文
  • 数据规范化的方法

    千次阅读 2017-11-08 16:14:22
    数据规范化是坑是因为规范化、标准化、归一化傻傻分不清。数据标准化/归一化方法(Normalization Method)汇总这一篇貌似还好一点。 在机器学习中数据所用的度量单位可能影响数据分析。例如,把height的度量单位...
  • 数据规范化是什么?

    千次阅读 2019-12-13 12:40:59
    数据规范化 通常用“范式(normal forms)” 定义消除数据冗余的程度。 (1) 第一范式(1NF) 每个属性值都必须是原子值,即仅仅是一个简单值而不含内部结构。 (2) 第二范式(2NF) 满足第一范式条件,...
  • 数据规范化(标准化)

    万次阅读 2018-01-24 16:57:36
    数据规范化(标准化) 在数据预处理时,这两个术语可以互换使用。(不考虑标准化在统计学中有特定的含义)。  下面所有的规范化操作都是针对一个特征向量(dataFrame中的一个colum)来操作的。  首先举一个...
  • 2. 数据规范化方法 归一化(Min-max规范化) 标准化(Z-score标准化) 小数定标规范化 4. 规范化的作用 3. 数据挖掘算法中是否都需要进行规范化呢? 4. 标准化有什么注意事项? 具体写在了我的笔记里: ...
  • 数据变换是数据准备的重要环节,将数据转换成...数据规范化:统一尺度 属性构造:构造新的属性 (特征工程) 相关代码地址 接下来,介绍数据规范化的几种方法: 1 Min-Max 规范化(最小-最大规范化) 将原始数据映...
  • pandas:数据规范化方法与python实现

    千次阅读 2018-11-09 16:09:47
    这里就不说为什么要做数据规范化了,直接讲几种规范化的方法。 有许多规范化的方法,我们将学习种:最大-最小规范化、分数规范化、小数定标规范化。这里令是数值属性,具有个观测值。 一、原理 1.最大-最小规范化...
  • 数据规范化(归一化)方法

    万次阅读 2017-06-22 09:03:38
    数据挖掘中,在训练模型之前,需要对特征进行一定的处理,最常见的处理方式之一就是数据规范化数据规范化的作用主要有两个:去掉量纲,使得指标之间具有可比性;将数据限制到一定区间,使得运算更为便捷。
  • R语言中数据规范化代码

    千次阅读 2018-05-25 15:54:52
    数据规范化代码 # 设置工作空间 # 把“数据及程序”文件夹拷贝到F盘下,再用setwd设置工作空间 setwd(&amp;quot;E:\\R_workspace\\R语言数据分析与挖掘实战\\chp4&amp;quot;) # 读取数据 data &amp;...
  • 数据预处理-数据归一化和数据规范化 1. 数据归一化1.1. 作用 把数据映射到[0,1]的区间中 把有量纲形式变成无量纲形式 1.2. 算法1.2.1. 最小-最大归一化Y=X−XminXmax−XminY = \frac{X - Xmin}{Xmax - Xmin} 把X的...
  • 数据规范化常用方法

    千次阅读 2015-05-19 08:46:54
    数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间。...1.最小-最大规范化  其中max_A为样本数据的最大值,min_A为样本数据的最小值。这种方法有一个缺陷就是当有新数据加入时,可能导致m
  • 数据规范化(归一化)、及Z-score标准化

    万次阅读 多人点赞 2018-05-15 22:11:58
    数据规范化数据规范化(归一化)处理是数据挖掘的一项基础工作。不同评价指标往往具有不同的量纲,数值见的差别可能很大,不进行处理可能会影响到数据分析的结果。为了消除指标之间的量纲和取值范围差异的影响,需要...
  • (1)数据清理:通过填写缺失的值、光滑噪声数据、识别和删除离群点等方法去除数据中的噪声数据和无关数据,并且处理遗漏的数据和清洗“脏”数据,考虑时间顺序和数据变化等。数据清理主要针对缺失值的数据处理,并...
  • R语言︱数据规范化、归一化

    千次阅读 2021-01-17 15:01:50
    大致有:最小-最大规范化、均值标准化、小数定标规范化1、最小-最大规范化也叫离差标准化,是对原始数据的线性变换,将数据映射到[0,1]之间,与功效系数法相同。#最小-最大规范化b1=(data[,1]-min(data[,1]))/(max...
  • 数据规范化

    千次阅读 2011-08-25 14:30:05
    通过将属性值按比例缩放,使之落入一个小的特定区间,如0.0~1.0,对属性规范化。对于涉及神经网络或距离度量的分类算法(如最近邻分类)和聚类,规范化特别有用。如果使用神经网络后向传播算法进行分类挖掘(见第6...
  • 数据的预处理之数据规范化

    千次阅读 2014-05-10 22:27:50
    一、什么是数据规范化  数据规范化是数据挖掘中数据变换的一种方式,数据变换将数据转换或统一成适合于挖掘的形式。而数据规范化是指将被挖掘对象的属性数据按比例缩放,使其落入一个小的特定区间(如[-1, 1]或...
  • 数据库数据规范化

    千次阅读 多人点赞 2018-10-08 22:38:03
    Codd博士定义了6个范式来规范化数据库,范式由小到大来约束,范式越高冗余越小,但表的个数也越多。实验证明,三范式是性价比最高的。 2.1 第一范式:确保每列原子性 第一范式确保每个字段不可再分 如下表设计是否...
  • R + python︱数据规范化、归一化、Z-Score

    万次阅读 多人点赞 2016-04-23 21:35:32
    笔者寄语:规范化主要是因为数据受着单位的影响较大,需要进行量纲化。大致有:最小-最大规范化、均值标准化、小数定标规范化 1、最小-最大规范化 也叫离差标准化,是对原始数据的线性变换,将数据映射到[0,1]...
  • 数据库设计之规范化和反规范化

    千次阅读 2019-09-09 20:50:36
    文章目录一、规范化二、反规范化      数据库设计的规范化能够经常被提及,但是反规范化很少被涉猎。实际应用中反规范化应用的场景很多。本文主要介绍一下数据库的反规范化。 一、规范化 ...
  • 缺失值的处理方法: 1,忽略元组 2,人工填写缺失值 ...数据规范化的方法: 1,最小-最大规范化 这种方法没啥好说的,一个公式解决 V‘ = (v-minA)*(new_maxA-new_minA)/(maxA-minA); 2,z-sco
  • 原文地址:数据的规范化,归一化,标准化,正则化作者:打湿井盖 ...数据规范化  一种是针对数据库的解释   规范化理论把关系应满足的规范要求分为几级,满足最低要求的一级叫做第一范式(1NF),在第一范式的

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 804,582
精华内容 321,832
关键字:

数据的规范化

友情链接: vbapd.rar