python笔记4:数据归一化(0,1),归至(-1,1)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
python笔记4:数据归一化(0,1),归至(-1,1)
- 一、pytorch里tensor数据归一化
- 1.tensor数组全局归一化
- 2.tensor数组指定维度归一化
- 二、pytorch里tensor数据归至(-1,1)
一、pytorch里tensor数据归一化
1.tensor数组全局归一化
数学公式
将数组中的无论正负数值归一化到[0, 1]之间
具体操作如下:
- 定义函数,输入参数为tensor值
- 求出tensor中最小值
- 判断最小值是否为负数
- 若是负数,则tensor所有数值加上最小值的绝对值,此时tensor里无负数,最小值置为0
- 求出tensor最大值
- 写出数学公式实现代码
- 返回值即为全局归一化后的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)相关推荐
- sklearn 笔记:数据归一化(StandardScaler)
1 StandardScaler原理 去均值和方差归一化.且是针对每一个特征维度来做的,而不是针对样本. ,其中μ为所有样本数据的均值,σ为所有样本数据的标准差. 2 用sklearn 实现数据归一化 ...
- Python笔记:数据分列
以下,是在Python中实现数据分列的方法.原理不作赘述,具体请看示例. 00. 构造数据集: # 构造数据集 import pandas as pd import numpy as npdf = p ...
- 【Python学习】数据归一化Scaling与标准化Normalization间的区别与相关实现
1.区别介绍 (1)Scaling 归一化用于将数据归一到某一个范围,如[0,1]或者[0,10],主要是范围上的变化 (2)Normalization 标准化用于改变数据的分布情况,通过将数据分布转 ...
- Python笔记:数据切片
以下是在pandas中实现数据切片的常用脚本.原理不赘述,具体示例如下: 01. 构造数据集 # 构造数据源 import pandas as pddf = pd.DataFrame({" ...
- Python笔记:数据排名
本文简要展示一下,怎么在pandas中用rank()函数进行数据排名.原理不作赘述,具体用法请看示例: 01. 构造数据集 import pandas as pddf = pd.DataFrame({ ...
- python笔记 基础语法·第0课【print & 转义字符】
print() 函数 print('') 直接打印引号中内容,如print(1+1) 显示 1+1 print() 让计算机读懂括号中内容,进行计算,如print(1+1) 显示 2 转义字符
- Python 实现数据归一化处理
字符类型不能归一化... 数据处理经常要用到归一化处理,使各项指数的尺度达到统一,python中实现数据归一化处理的代码如下: #准备工作:安装numpy.pandas包,csv文件转为数值型,之后修 ...
- python归一化处理_详解python实现数据归一化处理的方式:(0,1)标准化
在机器学习过程中,对数据的处理过程中,常常需要对数据进行归一化处理,下面介绍(0, 1)标准化的方式,简单的说,其功能就是将预处理的数据的数值范围按一定关系"压缩"到(0,1)的范 ...
- 数据归一化matlab及python 实现
更多细节请查看 https://www.zhihu.com/question/20455227 归一化的目的简而言之,是使得没有可比性的数据变得具有可比性,同时又保持相比较的两个数据之间的相对关系. ...
最新文章
- 学Redis这篇就够了!
- 如何让我们的vmware虚拟机上网!!
- 用上微软Bosque 困扰程序员30年的问题解决了
- Will it finally: 关于 try/catch 的一些细节
- bzoj1715[Usaco2006 Dec]Wormholes 虫洞
- 第一次作业--四则运算题目生成程序
- elsa-core——1.Hello World:Console
- java并发编程(11)-- 线程池 拒绝策略
- C# 异步调用控件 跨线程调用控件 跨线程赋值
- 在ASP.NET MVC项目中使用React
- 【C/C++笔记】之显式调用DLL、隐式调用DLL、查看DLL输出函数
- 平台打包整合成exe安装部署(java+mysql+tomcat+war)
- 用python实现pdf转word_Python实现PDF转Word
- FPGA入门 Xilinx暑期学校学习Day4
- gflags使用详解
- 嵌入式开发培训学哪些?嵌入式培训课程好学吗
- 使用java代码打印三角形、平行四边形、菱形
- The Preliminary Contest for ICPC Asia Shanghai 2019 Light bulbs
- 「spacingjs-1.0.7」,点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载,极速在线查看享用。 链接:https://www.aliyundrive.com/s/a87tt
- excel数据修约(四舍六入五成双)