一、原理

数据标准化(Normalization):将数据按照一定比例进行缩放,使其落入到一个特定的小区间。

数据标准化的类别:

Min-Max标准化

Z-Score标准化(Standard Score,标准分数)

小数定标(Decimal scaling)标准化

均值归一化

向量归一化

指数转换

1、Min-Max标准化

Min-Max标准化,指对原始数据进行线性变换,将值映射到[0,1]之间。

公式:

式中,x为原始数据的数据,xmin为原始数据的最小值,xmax为原始数据的最大值。

2、Z-Score标准化

又称为Standard Score(标准分数),指基于原始数据的均值(mean)和标准差(standard deviation)来进行数据的标准化。

公式:

式中,x为原始数据的数据,μ为原始数据的均值,σ为原始数据的标准差。

3、小数定标(Deciaml scaling)标准化

指通过移动小数点的位置来进行数据的标准化。小数点移动的位数取决于原始数据中的最大绝对值。

公式:

式中,x为原始数据,10j的j表示最大绝对值的位数。

例如,现在有一个数组[-309, -10, -43, 87, 344, 970],其中最大绝对值为970,即j=3,标准化为的数据为[-0.309, -0.01, -0.043, 0.087, 0.344, 0.97]

4、均值归一化

指通过原始数据中的均值、最大值和最小值来进行数据的标准化。

公式:

式中,x为原始数据,μ为原始数据的均值,xmin为原始数据的最小值,xmax为原始数据的最大值。当然,分母部分也可以使用xmax代替。

5、向量归一化

指通过原始数据中的每个值除以所有数据之和来进行数据的标准化。

公式:

式中,x为原始数据,分母为所有数据之和。

6、指数转换

指通过对原始数据的值进行相应的指数函数变换来进行数据的标准化。进行指数转换常见的函数方法有lg函数、Softmax函数和Sigmod函数。

公式:

(1)lg函数:

式中,x为原始数据,

为原始数据的最大值。

(2)Softmax函数:

式中,x为原始数据,e为自然对数,分母表示的是原始数据中每个数据对e求指数后的和。

(3)Sigmoid函数:

二、代码实现数据的标准化

importnumpy as npimportmathclassDataNum:def __init__(self):

self.arr= [1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0]

self.x_max= max(self.arr) #最大值

self.x_min = min(self.arr) #最小值

self.x_mean = sum(self.arr) / len(self.arr) #平均值

self.x_std = np.std(self.arr) #标准差

print("原始数据:\n{}".format(self.arr))defMin_Max(self):

arr_=list()

distance= self.x_max-self.x_minfor x inself.arr:

arr_.append(round((x-self.x_min)/distance,4)) #保留4位小数

print("Min_Max标准化结果:\n{}".format(arr_))defZ_Score(self):

arr_=list()for x inself.arr:

arr_.append(round((x-self.x_mean)/self.x_std,4))print("Z_Score标准化结果:\n{}".format(arr_))defDecimalScaling(self):

arr_=list()

j= self.x_max // 10 if self.x_max % 10 == 0 else self.x_max // 10 + 1

for x inself.arr:

arr_.append(round(x/(math.pow(10,j)),4)) #保留4位小数

print("DecimalScaling标准化结果:\n{}".format(arr_))defMean(self):

arr_=list()

distance= self.x_max -self.x_minfor x inself.arr:

arr_.append(round((x- self.x_mean) / distance, 4)) #保留4位小数

print("Mean标准化结果:\n{}".format(arr_))defVector(self):

arr_=list()

arr_sum=sum(self.arr)for x inself.arr:

arr_.append(round(x/ arr_sum, 4)) #保留4位小数

print("Vector标准化结果:\n{}".format(arr_))defexponential(self):

arr_1= list() #lg

arr_2 = list() #SoftMax

arr_3 = list() #Sigmoid

sum_e = sum([math.exp(x) for x inself.arr])for x inself.arr:

arr_1.append(round(math.log10(x)/ math.log10(self.x_max), 4)) #保留4位小数

arr_2.append(round(math.exp(x) / sum_e, 4)) #保留4位小数

arr_3.append(round(1 / (1+math.exp(-x)), 4)) #保留4位小数

print("lg标准化结果:\n{}".format(arr_1))print("SoftMax标准化结果:\n{}".format(arr_2))print("Sigmod标准化结果:\n{}".format(arr_3))defdo(self):

dn.Min_Max()

dn.Z_Score()

dn.DecimalScaling()

dn.Mean()

dn.Vector()

dn.exponential()if __name__ == '__main__':

dn=DataNum()

dn.do()

运行结果:

python标准化_数据标准化与Python实现相关推荐

  1. python 标准化_数据标准化

    常见的数据标准化方法有以下6种: 1.Min-Max标准化 Min-Max标准化是指对原始数据进行线性变换,将值映射到[0,1]之间 2.Z-Score标准化 Z-Score(也叫Standard S ...

  2. python 离散化_数据离散化与Python实现

    一.原理 数据离散化(也称,数据分组),指将连续的数据进行分组,使其变为一段离散化的区间. 根据离散化过程中是否考虑类别属性,可以将离散化算法分为:有监督算法和无监督算法.事实证明,由于有监督算法充分 ...

  3. python 归一化_数据的标准化和归一化

    数据的标准化 归一化 归一化的目标 归一化的好处 归一化的方法 无量纲表达式 为什么要对数据进行归一化处理 常见的数据归一化方法 Python归一化处理方法 数据的标准化 数据的标准化(normali ...

  4. python代码规范化_数据标准化方法及其Python代码实现

    数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间.目前数据标准化方法有多种,归结起来可以分为直线型方法(如极值法.标准差法).折线型方法(如三折线法).曲线型方法 ...

  5. 菜鸟窝出品】数据清洗、python与sklearn数据标准化实战(附项目源码)

    本文是由菜鸟窝特邀清华的人工智能博士亲授,从零开始教你如何进行数据预处理,并通过实际案例手把手教会大家进行实操.相关的源码会发给大家实践,让你真正做到学以致用. 阿里百度人工智能大神精讲的人工智能视频 ...

  6. dataframe数据标准化处理_数据标准化处理

    一.标准分数 标准分数(Standard Score,又称z-score.z分数或标准化值),是将集合中的单个数与集合的均值相减的结果除以集合的标准差得到标准化的结果,该方法类似于正态分布的标准化转换 ...

  7. python中ret是什么意思_数据结构图在python中的应用

    原标题:数据结构图在python中的应用 程序世界里,有很多的数据结构,比如:堆.栈.链表等等,今天要讲的就是图数据结构啦. 相信大家都使用过或者听说过图数据库吧,我们就来看看最简单的图数据结构算法. ...

  8. c# 标准正太分布函数_数据标准化处理中的min-max和zscore

    数据标准化就是把有量纲的数据变成无量纲的数据,把量级不同的数据处理到一个层级,从而让不同的数据之间具有可比性.比如收入和体重两个解释变量,收入的单位是元,体重的单位是kg,10000元的收入要和45k ...

  9. python 处理行列数据集数据_数据预处理(python)

    作为统计的一员,用python来对数据做语出这一步骤是必需的,所以接下来就来总结一下python数据预处理的步骤吧,这里就不放数据了,直接上代码,代码后都有解释,有错误的尽管提出来哈.下面是流程图: ...

最新文章

  1. MongoDB分片详细说明(ITSOM)
  2. 长波通信、中波通信、短波通信、超短波通信与微波通信介绍
  3. 10、计算机图形学——几何介绍(曲面的分类以及示例)
  4. (转)start_kernel 代码分析
  5. POJ 2069最小球覆盖 HDU3007最小圆覆盖【模拟淬火算法】
  6. excel转成csv格式的默认分隔符
  7. 友盟分享成功之后没有提示信息的解决
  8. R语言quantmod包
  9. that is why用法
  10. 什么样的企业适合建设中台
  11. 利用***检测系统防范******方法介绍
  12. Java温习(基础语法一)
  13. 小米线刷工具 MiFlash 提示长度不能小于 0 参数名 length,无法读取设备解决方法
  14. C# 解析种子文件(bt文件)
  15. 进击的“懒人经济”,快手又迎来一个万亿蓝海市场
  16. R语言将变量分组的三种方法(含cut函数介绍)
  17. 如何用Photoshop制作渐变图形
  18. [Asp.Net Core]鉴权授权
  19. 模块电路选型(5)----电机驱动模块
  20. Arduino - 最小系统(基于ATMEGA8-16PU)

热门文章

  1. 关于vc++调用 exe文件的问题
  2. mfc大观之一(全局对象)
  3. C及C++中的一些基础知识点(持续更新)
  4. mimemultipart java_H5提交MIME类型为multipart/form-data类型的表单,后端如何处理(比如java,.NET)?...
  5. 内购订单进行二次处理_游戏内购要涨价?谷歌效仿苹果:安卓内购抽成30%
  6. Python随机梯度下降法(四)【完结篇】
  7. 隐藏html和php后缀的简易方法
  8. 新版 Chrome 等主流浏览器将不再允许关闭点击跟踪
  9. Python-爬虫-针对有frame框架的页面
  10. 修改Linux用户的UID、GID