精华内容
下载资源
问答
  • 数据库设计之规范化和反规范化

    千次阅读 2019-09-09 20:50:36
    文章目录一、规范化二、反规范化      数据库设计的规范化能够经常被提及,但是反规范化很少被涉猎。实际应用中反规范化应用的场景很多。本文主要介绍一下数据库的反规范化。 一、规范化 ...


         数据库设计的规范化能够经常被提及,但是反规范化很少被涉猎。实际应用中反规范化应用的场景很多。本文主要介绍一下数据库的反规范化。

    一、规范化

    常见的规范化有数据库设计的三范式。

    • 1NF 是最低的规范化要求。如果关系 R 中所有属性的值域都是简单域,属性不可再分。
    • 2NF 非主属性完全函数依赖于码
    • 3NF 非主属性不传递依赖于任何一个候选码

    二、反规范化

        数据库中的数据规范化的优点是减少了数据冗余,节约了存储空间,相应逻辑和物理的I/O 次数减少,同时加快了增、删、改的速度,但是对完全规范的数据库查询,通常需要更多的连接操作,从而影响查询速度。因此,有时为了提高某些查询或应用的性能而破坏规范规则,即反规范化(非规范化处理)。

    常见的反规范化技术包括:

    • (1)增加冗余列
      增加冗余列是指在多个表中具有相同的列,它常用来在查询时避免连接操作。例如:以规范化设计的理念,学生成绩表中不需要字段“姓名”,因为“姓名”字段可以通过学号查询到,但在反规范化设计中,会将“姓名”字段加入表中。这样查询一个学生的成绩时,不需要与学生表进行连接操作,便可得到对应的“姓名”。

    • (2)增加派生列
      增加派生列指增加的列可以通过表中其他数据计算生成。它的作用是在查询时减少计算量,从而加快查询速度。例如:订单表中,有商品号、商品单价、采购数量,我们需要订单总价时,可以通过计算得到总价,所以规范化设计的理念是无须在订单表中设计“订单总价”字段。但反规范化则不这样考虑,由于订单总价在每次查询都需要计算,这样会占用系统大量资源,所以在此表中增加派生列“订单总价”以提高查询效率。

    • (3)重新组表
      重新组表指如果许多用户需要查看两个表连接出来的结果数据,则把这两个表重新组成一个表来减少连接而提高性能。

    • (4)分割表
      有时对表做分割可以提高性能。表分割有两种方式。
      水平分割:根据一列或多列数据的值把数据行放到两个独立的表中。水平分割通常在下面的情况下使用。

      情况 1:表很大,分割后可以降低在查询时需要读的数据和索引的页数,同时也降低了索引的层数,提高查询效率。
      情况 2:表中的数据本来就有独立性,例如表中分别记录各个地区的数据或不同时期的数据,特别是有些数据常用,而另外一些数据不常用。
      情况 3:需要把数据存放到多个介质上。

    • (5)垂直分割:把主码和一些列放到一个表,然后把主码和另外的列放到另一个表中。如果一个表中某些列常用,而另外一些列不常用,则可以采用垂直分割,另外垂直分割可以使得数据行变小,一个数据页就能存放更多的数据,在查询时就会减少 I/O 次数。其缺点是需要管理冗余列,查询所有数据需要连接操作。


    END
    展开全文
  • 2. 数据规范化方法 归一化(Min-max规范化) 标准化(Z-score标准化) 小数定标规范化 4. 规范化的作用 3. 数据挖掘算法中是否都需要进行规范化呢? 4. 标准化有什么注意事项? 具体写在了我的笔记里: ...

    这篇总结了哪些东西:

    1. 数据变换
    2. 数据规范化方法

    归一化(Min-max规范化)
    标准化(Z-score标准化)
    小数定标规范化

    4. 规范化的作用
    3. 数据挖掘算法中是否都需要进行规范化呢?
    4. 标准化有什么注意事项?

    具体写在了我的笔记里:
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 一、数据规范化的原理 数据规范化处理是数据挖掘的一项基础工作。不同的属性变量往往具有不同的取值范围,数值间的差别可能很大,不进行处理可能会影响到数据分析的结果。为了消除指标之间由于取值范围带来的差异,...

    本文代码均已在 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
    
    展开全文
  • 数据规范化处理 在拿到数据进行建模之前,我们需要将数据进行初步处理,例如通过据平滑、数据聚集、数据概化和规范化等方式将数据转换成适用于数据挖掘的形式。本文只介绍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
    展开全文
  • 数据变换是数据准备的重要环节,将数据转换成适用于数据挖掘的形式。数据变换的常用方式: 数据平滑:去除噪声,将数据离散化 数据聚集:如sql中的聚集函数,...1 Min-Max 规范化(最小-最大规范化) 将原始数据映...
  • 向量 规范化

    千次阅读 2019-02-24 12:55:58
    向量 规范化
  • 这是一篇从笔记里摘录的知识点,因为发现在不同的文献或者文章里,对图片数据规范化、归一化的具体方法都不一样,很是困惑。下面这几种,都是广义上的数据规范化 Data normalization Data standarization Data ...
  • 关系规范化

    千次阅读 2020-07-04 21:24:15
    关系规范化的目的 关系规范化的目的是为了消除储存异常,减少数据冗余,以保证数据的完整性,正确性,一致性和储存效率,一般讲关系规范到III范式即可 1NF范式 一个关系的每个属性都是不可再分的基本数据项,则该...
  • 关系数据库设计:谈谈规范化技术

    千次阅读 多人点赞 2020-08-19 21:42:31
    通过实际案例介绍关系数据库设计中的规范化技术(Normalization),为什么需要规范化,常见的第一范式、第二范式和第三范式,反规范化应用的场景以及外键的取舍问题。
  • 前端工程化-规范化

    万次阅读 2020-08-13 20:24:40
    这一篇文章主要是关于前端规范化的内容,前端规范化是我们践行前端工程化过程中的重要的组成部分 有利于项目维护,以及二次开发,减低维护成本,便于后续人员接手 为什么要有规范化 1、软件开发需要多人协同 2、...
  • 数据规范化处理

    千次阅读 2020-02-11 07:11:40
      常用的数据规范化处理主要有Min-max规范化、Z-Score规范化和小数定标规范化。下面简要介绍下三种数据规范化方法,并用python的机器学习库SciKit-Learn来实现数据变化。 Min-max 规范化   Min-max 规范化方法是...
  • 什么是数据库规范化 维基百科的定义如下: 数据库规范化,又称数据库或资料库的正规化、标准化,是数据库设计中的一系列原理和技术,以减少数据库中数据冗余,增进数据的一致性。 数据库范式是埃德加·科德设计...
  • 数据库规范化

    千次阅读 2017-03-21 14:31:24
    规范化(Normalization)是数据库系统设计中非常重要的一个技术。数据库规范化能够让数据库设计者更好地了解组织内部当前的数据结构,最终得到一系列的数据实体。数据库规范化通过对数据库表的设计,可以有效降低...
  • 数据库的规范化与非规范化比较

    千次阅读 2014-10-02 18:36:54
    数据库设计的规范化与非规范化: (1)表格与面向对象: 表格包含各个字段,面向对象也是包含多个成员变量。两者有相似之处。 (2)E-R图向关系图转换: 一对一: 一对多: 多对多: (3)规范化与非...
  • 数据库规范化过程

    千次阅读 2019-08-25 13:41:37
    数据库规范化过程 关系数据库的规范化说的通俗一些就是对表的规范化规范化的必要性: 根据项目的需求,我们会创建相应的数据库表格来完成项目中的数据的存储。这已经成为做项目的固定流程了,但是在真正的开始...
  • 关系模式的规范化理论

    千次阅读 2019-05-11 19:43:44
    关系模式规范化的定义 到目前为止,规范化理论已经提出了六类范式。范式级别可以逐级升高,而升高规范化的过程就是逐步消除关系模式中不合适的数据依赖的过程,使模型中的各个关系模式达到某种程度的分离。一个低一...
  • 规范化、标准化、归一化、正则化

    万次阅读 多人点赞 2018-07-18 21:52:39
    规范化: 针对数据库 规范化把关系满足的规范要求分为几级,满足要求最低的是第一范式(1NF),再来是第二范式、第三范式、BC范式和4NF、5NF等等,范数的等级越高,满足的约束集条件越严格。 针对数据 数据的规范...
  •  运用java编程语言实现求最小最大规范化、小数定标、z_score规范化的算法。 源代码 package com.zz.rule; import java.util.Iterator; import java.util.List; import java.util.Collections; public class Rule ...
  • 数据规范化(归一化)、及Z-score标准化

    万次阅读 多人点赞 2018-05-15 22:11:58
    数据规范化数据规范化(归一化)处理是数据挖掘的一项基础工作。不同评价指标往往具有不同的量纲,数值见的差别可能很大,不进行处理可能会影响到数据分析的结果。为了消除指标之间的量纲和取值范围差异的影响,需要...
  • 数据库规范化-范式

    千次阅读 2015-05-21 14:40:09
    数据库规范化-范式
  • 数据分析-数据规范化的一些方法

    万次阅读 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.]...
  • 技术研发部规范化管理工具箱

    热门讨论 2011-09-29 16:55:29
    技术研发部规范化管理工具箱技术研发部规范化管理工具箱技术研发部规范化管理工具箱技术研发部规范化管理工具箱技术研发部规范化管理工具箱
  • 数据库设计中关系规范化理论总结

    千次阅读 多人点赞 2020-07-31 11:08:14
    数据库是一门对数据进行有效管理的技术,它研究信息资源如何被...经过科学家的讨论研究,最终形成我们今天所看到的关系数据库的规范化理论。本文通过例举具体事例来探讨关系规范化理论在数据库逻辑设计中的形成和方法。
  • 数据规范化(归一化)方法

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

    千次阅读 2019-05-26 14:18:10
    在关系数据库中,所有的数据文件都以 二维表的形式...这种分解的过程就叫做规范化。 第一范式1NF 第一范式的目标是确保每列的原子性 如果每列都是不可再分的最小数据单元(也称为最小的原子单 元),则满足第一范...
  • 关系模式规范化

    千次阅读 2019-03-22 21:26:43
    3NF规范化:通过该算法可以获得一个保持函数依赖性并满足3NF的关系模式分解 先求出Fmin 1、X->A,XA=R 那么XA单独构成一个关系模式 2、如果关系模式R中的某些属性与函数依赖集F的左右部属性均无关的话,将他们...
  • 规范化Unicode字符串

    千次阅读 2020-07-05 11:07:13
    规范化Unicode字符串大小写折叠规范化文本匹配实用函数极端规范化:去掉变音符号 因为Unicode有组合字符(变音符号和附加到前一个字符上的记号,打印时作为一个整 体),所以字符串比较起来很复杂。 #café”这个词...
  • pandas:数据规范化方法与python实现

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

    千次阅读 2019-04-22 18:56:38
    数据挖掘之数据规范化  数据规范化处理是数据挖掘的一项基本操作。现实中,数据中不同特征的量纲可能不一致,数值间的差别可能很大,不进行处理可能会影响到数据分析的结果,因此,需要对数据按照一定比例进行缩放...
  • 图像预处理: 规范化

    千次阅读 2017-10-12 11:47:38
    概念 在自己获取的图像样本上,在网络的训练之前...规范化(normalize) 效果图 原图: 预处理结果图: 实现代码 # coding=utf-8 import numpy as np import cv2 pic_path = './Elegent_Girl.jpg' def

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 974,615
精华内容 389,846
关键字:

规范化