提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

python笔记4:数据归一化(0,1),归至(-1,1)

  • 一、pytorch里tensor数据归一化
    • 1.tensor数组全局归一化
    • 2.tensor数组指定维度归一化
  • 二、pytorch里tensor数据归至(-1,1)

一、pytorch里tensor数据归一化

1.tensor数组全局归一化

数学公式
将数组中的无论正负数值归一化到[0, 1]之间

具体操作如下:

  1. 定义函数,输入参数为tensor值
  2. 求出tensor中最小值
  3. 判断最小值是否为负数
  4. 若是负数,则tensor所有数值加上最小值的绝对值,此时tensor里无负数,最小值置为0
  5. 求出tensor最大值
  6. 写出数学公式实现代码
  7. 返回值即为全局归一化后的tensor

2.tensor数组指定维度归一化

import torch
def data_normal_2d(orign_data,dim="col"):"""针对于2维tensor归一化可指定维度进行归一化,默认为行归一化参数1为原始tensor,参数2为默认指定行,输入其他任意则为列"""if dim == "col":dim = 1d_min = torch.min(orign_data,dim=dim)[0]for idx,j in enumerate(d_min):if j < 0:orign_data[idx,:] += torch.abs(d_min[idx])d_min = torch.min(orign_data,dim=dim)[0]else:dim = 0d_min = torch.min(orign_data,dim=dim)[0]for idx,j in enumerate(d_min):if j < 0:orign_data[idx,:] += torch.abs(d_min[idx])  d_min = torch.min(orign_data,dim=dim)[0]d_max = torch.max(orign_data,dim=dim)[0]dst = d_max - d_minif d_min.shape[0] == orign_data.shape[0]:d_min = d_min.unsqueeze(1)dst = dst.unsqueeze(1)else:d_min = d_min.unsqueeze(0)dst = dst.unsqueeze(0)norm_data = torch.sub(orign_data,d_min).true_divide(dst)return norm_datax = torch.randint(low=-10,high=10,size=(3,6))
data_normal_2d(x)
tensor([[1.0000, 0.8182, 0.4545, 0.0000, 0.8182, 0.2727],[0.6154, 0.5385, 0.5385, 0.0769, 0.0000, 1.0000],[0.4444, 0.3889, 0.0000, 0.2778, 1.0000, 0.5000]])

新torch方法
torch.min() / torch.max()
相较于全局归一化,指定维度使用torch.max(),torch.min()的第二种使用方法
将被求最值的tensor放入括号里,输入一个tensor的时候,如torch.min(x,dim=0),会返回两个值:第一个是指定维度为行时,各行的最小值组成的tensor;第二个返回的是各最小值的索引tensor。
tensor.unsqueeze()
该方法是将原tensor多扩充一个维度,例如代码中d_min.unsqueeze(1),是指将d_min从原来的一维向量,扩充其第二维度。


二、pytorch里tensor数据归至(-1,1)

因实际数据处理过程中,有些数据本身具有正负属性,此时若直接归一化,会损失数据本身的一些特征。
此时代码里可直接添加一行
norm_data = (norm_data-0.5).true_divide(0.5)

    else:d_min = d_min.unsqueeze(0)dst = dst.unsqueeze(0)norm_data = torch.sub(orign_data,d_min).true_divide(dst)norm_data = (norm_data-0.5).true_divide(0.5)return norm_data

即可将数据归一化至(-1,1)之间


python笔记4:数据归一化(0,1),归至(-1,1)相关推荐

  1. sklearn 笔记:数据归一化(StandardScaler)

    1 StandardScaler原理 去均值和方差归一化.且是针对每一个特征维度来做的,而不是针对样本. ,其中μ为所有样本数据的均值,σ为所有样本数据的标准差. 2 用sklearn 实现数据归一化 ...

  2. Python笔记:数据分列

    以下,是在Python中实现数据分列的方法.原理不作赘述,具体请看示例. 00. 构造数据集: # 构造数据集 import pandas as pd import numpy as npdf = p ...

  3. 【Python学习】数据归一化Scaling与标准化Normalization间的区别与相关实现

    1.区别介绍 (1)Scaling 归一化用于将数据归一到某一个范围,如[0,1]或者[0,10],主要是范围上的变化 (2)Normalization 标准化用于改变数据的分布情况,通过将数据分布转 ...

  4. Python笔记:数据切片

    以下是在pandas中实现数据切片的常用脚本​.原理不赘述,具体示例如下: 01. 构造数据集 # 构造数据源 import pandas as pddf = pd.DataFrame({" ...

  5. Python笔记:数据排名

    本文简要展示一下,怎么在pandas中用rank()函数进行数据排名.原理不作赘述,具体用法请看示例: 01. 构造数据集 import pandas as pddf = pd.DataFrame({ ...

  6. python笔记 基础语法·第0课【print & 转义字符】

    print() 函数 print('') 直接打印引号中内容,如print(1+1) 显示 1+1 print() 让计算机读懂括号中内容,进行计算,如print(1+1) 显示 2 转义字符

  7. Python 实现数据归一化处理

    字符类型不能归一化... 数据处理经常要用到归一化处理,使各项指数的尺度达到统一,python中实现数据归一化处理的代码如下: #准备工作:安装numpy.pandas包,csv文件转为数值型,之后修 ...

  8. python归一化处理_详解python实现数据归一化处理的方式:(0,1)标准化

    在机器学习过程中,对数据的处理过程中,常常需要对数据进行归一化处理,下面介绍(0, 1)标准化的方式,简单的说,其功能就是将预处理的数据的数值范围按一定关系"压缩"到(0,1)的范 ...

  9. 数据归一化matlab及python 实现

    更多细节请查看 https://www.zhihu.com/question/20455227 归一化的目的简而言之,是使得没有可比性的数据变得具有可比性,同时又保持相比较的两个数据之间的相对关系. ...

最新文章

  1. 学Redis这篇就够了!
  2. 如何让我们的vmware虚拟机上网!!
  3. 用上微软Bosque 困扰程序员30年的问题解决了
  4. Will it finally: 关于 try/catch 的一些细节
  5. bzoj1715[Usaco2006 Dec]Wormholes 虫洞
  6. 第一次作业--四则运算题目生成程序
  7. elsa-core——1.Hello World:Console
  8. java并发编程(11)-- 线程池 拒绝策略
  9. C# 异步调用控件 跨线程调用控件 跨线程赋值
  10. 在ASP.NET MVC项目中使用React
  11. 【C/C++笔记】之显式调用DLL、隐式调用DLL、查看DLL输出函数
  12. 平台打包整合成exe安装部署(java+mysql+tomcat+war)
  13. 用python实现pdf转word_Python实现PDF转Word
  14. FPGA入门 Xilinx暑期学校学习Day4
  15. gflags使用详解
  16. 嵌入式开发培训学哪些?嵌入式培训课程好学吗
  17. 使用java代码打印三角形、平行四边形、菱形
  18. The Preliminary Contest for ICPC Asia Shanghai 2019 Light bulbs
  19. 「spacingjs-1.0.7」,点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载,极速在线查看享用。 链接:https://www.aliyundrive.com/s/a87tt
  20. excel数据修约(四舍六入五成双)

热门文章

  1. 应广单片机PFC151
  2. 无接触式磁旋转编码器AS5040介绍
  3. AppCan4.0:开发者要做有价值的APP
  4. java计算机毕业设计水果销售管理网站源码+系统+数据库+lw文档
  5. php常规笔试题(二)
  6. c语言笔段式,缠论的分笔分段公式
  7. gnuplot 文件_如何使用gnuplot制作eps文件
  8. 网络工程师 第7章 下一代互联网
  9. uniapp里获取验证码
  10. java 中的空格符、换行符等怎么表示