-
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]]
更多相关内容 -
数据挖掘实验(一)数据规范化【最小-最大规范化、零-均值规范化、小数定标规范化】
2020-10-30 11:43:10一、数据规范化的原理 数据规范化处理是数据挖掘的一项基础工作。不同的属性变量往往具有不同的取值范围,数值间的差别可能很大,不进行处理可能会影响到数据分析的结果。为了消除指标之间由于取值范围带来的差异,...本文代码均已在 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′=max−minv−min(new_max−new_min)+new_min(2)零-均值规范化
将属性A的值根据其平均值mean和标准差std进行规范化:
v ′ = v − m e a n s t d v'=\frac {v-mean} {std} v′=stdv−mean(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规范化
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规范化
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.小数定标规范化
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 规范化
2021-01-15 10:41:49数据规范化处理 在拿到数据进行建模之前,我们需要将数据进行初步处理,例如通过据平滑、数据聚集、数据概化和规范化等方式将数据转换成适用于数据挖掘的形式。本文只介绍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)来操作的。 首先举一个... -
数据变换,数据规范化的方法之归一化(Min-max规范化)、标准化(Z-score规范化)、小数定标规范化
2019-03-06 11:52:592. 数据规范化方法 归一化(Min-max规范化) 标准化(Z-score标准化) 小数定标规范化 4. 规范化的作用 3. 数据挖掘算法中是否都需要进行规范化呢? 4. 标准化有什么注意事项? 具体写在了我的笔记里: ... -
常用数据规范化方法: min-max规范化,零-均值规范化等
2020-02-21 15:07:29数据变换是数据准备的重要环节,将数据转换成...数据规范化:统一尺度 属性构造:构造新的属性 (特征工程) 相关代码地址 接下来,介绍数据规范化的几种方法: 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(&quot;E:\\R_workspace\\R语言数据分析与挖掘实战\\chp4&quot;) # 读取数据 data &... -
1. 数据预处理-数据归一化和数据规范化
2017-09-11 19:43:25数据预处理-数据归一化和数据规范化 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数据规范化数据规范化(归一化)处理是数据挖掘的一项基础工作。不同评价指标往往具有不同的量纲,数值见的差别可能很大,不进行处理可能会影响到数据分析的结果。为了消除指标之间的量纲和取值范围差异的影响,需要... -
数据挖掘 第三章 第四章 :数据预处理的主要任务+数据规范化的方法+数据仓库OLAP
2019-04-20 23:08:28(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:03Codd博士定义了6个范式来规范化数据库,范式由小到大来约束,范式越高冗余越小,但表的个数也越多。实验证明,三范式是性价比最高的。 2.1 第一范式:确保每列原子性 第一范式确保每个字段不可再分 如下表设计是否... -
R + python︱数据规范化、归一化、Z-Score
2016-04-23 21:35:32笔者寄语:规范化主要是因为数据受着单位的影响较大,需要进行量纲化。大致有:最小-最大规范化、均值标准化、小数定标规范化 1、最小-最大规范化 也叫离差标准化,是对原始数据的线性变换,将数据映射到[0,1]... -
数据库设计之规范化和反规范化
2019-09-09 20:50:36文章目录一、规范化二、反规范化 数据库设计的规范化能够经常被提及,但是反规范化很少被涉猎。实际应用中反规范化应用的场景很多。本文主要介绍一下数据库的反规范化。 一、规范化 ... -
【数据处理3】:缺失值,数据规范化,相关系数,卡方检验
2016-05-16 16:46:07缺失值的处理方法: 1,忽略元组 2,人工填写缺失值 ...数据规范化的方法: 1,最小-最大规范化 这种方法没啥好说的,一个公式解决 V‘ = (v-minA)*(new_maxA-new_minA)/(maxA-minA); 2,z-sco -
数据的规范化,归一化,标准化,正则化
2017-04-07 18:13:53原文地址:数据的规范化,归一化,标准化,正则化作者:打湿井盖 ...数据规范化 一种是针对数据库的解释 规范化理论把关系应满足的规范要求分为几级,满足最低要求的一级叫做第一范式(1NF),在第一范式的