当前位置: 首页 > news >正文

利用字典对归一化后的数据0误差还原

  • 假设我对精度要求很高,高到无法容忍有任何误差,那么我先将x按照大小排序,然后归一化,用字典将归一化前后的x存储下来,在深度学习时使用归一化后的x进行处理,但是最后画图等处理时,我用字典取出归一化之前对应的值。

思路:x = [3, 4, 5, 1, 2, 3],先排序,然后用scaler = StandardScaler()
x_scaled = scaler.fit_transform(x.reshape(-1, 1))
这种方法归一化得到结果, 然后采用1个字典,能存储归一化之后的值:归一化之前的值,这种字典,以及归一化之前的值:归一化之后的值这种字典。

首先,将 x 数组排序并使用 StandardScaler 进行归一化。接着,创建两个字典:

  1. 归一化后的值:归一化之前的值scaled_to_original
  2. 归一化之前的值:归一化之后的值original_to_scaled

下面是实现的示例代码:

import numpy as np
from sklearn.preprocessing import StandardScaler# 原始数据
x = np.array([3, 4, 5, 1, 2, 3])# 排序数据
x_sorted = np.sort(x)# 使用 StandardScaler 进行归一化
scaler = StandardScaler()
x_scaled = scaler.fit_transform(x_sorted.reshape(-1, 1)).flatten()# 创建字典存储归一化值到原始值的映射
scaled_to_original = {scaled: original for scaled, original in zip(x_scaled, x_sorted)}# 创建字典存储原始值到归一化值的映射
original_to_scaled = {original: scaled for original, scaled in zip(x_sorted, x_scaled)}# 打印结果
print("归一化后的值:归一化之前的值 字典:", scaled_to_original)
print("归一化之前的值:归一化后的值 字典:", original_to_scaled)# 示例:使用归一化值查找原始值
example_scaled_value = x_scaled[0]
example_original_value = scaled_to_original[example_scaled_value]
print(f"归一化值 {example_scaled_value} 对应的原始值: {example_original_value}")# 示例:使用原始值查找归一化值
example_original_value = 3
example_scaled_value = original_to_scaled[example_original_value]
print(f"原始值 {example_original_value} 对应的归一化值: {example_scaled_value}")

代码说明

  1. 数据排序x_sorted = np.sort(x) 会将 x 中的元素排序。
  2. 归一化scaler.fit_transform() 方法对排序后的数据进行标准化,返回标准化后的结果。
  3. 字典生成
    • scaled_to_original 字典将归一化后的值作为键,原始值作为值。
    • original_to_scaled 字典将原始值作为键,归一化后的值作为值。

运行结果

当运行上述代码时,输出结果会显示两个字典的内容,并且可以通过这两个字典进行值的查找。

示例输出

输出结果:

归一化后的值:归一化之前的值 字典: {-1.5491933384829668: 1, -0.7745966692414834: 2, 0.0: 3, 0.7745966692414834: 4, 1.5491933384829668: 5}
归一化之前的值:归一化后的值 字典: {1: -1.5491933384829668, 2: -0.7745966692414834, 3: 0.0, 4: 0.7745966692414834, 5: 1.5491933384829668}
归一化值 -1.5491933384829668 对应的原始值: 1
原始值 3 对应的归一化值: 0.0

由于 3x 中出现了两次,因此在字典中将其映射到的归一化值是相同的。


  • 一个宽松的版本
  1. 使用插值方法:可以使用线性插值来获取最接近的原始值,而不是严格寻找对应的值。
  2. 确保预测值在范围内:确保生成的 predicted_normalized 值确实在归一化范围内。

以下是采用线性插值的实现方式:

示例代码

import numpy as np
from sklearn.preprocessing import MinMaxScaler
from scipy.interpolate import interp1d# 生成数据
x = np.random.rand(100) * 100  # 生成100个随机数,范围在0到100之间# 创建 MinMaxScaler 对象
scaler = MinMaxScaler()# 对数据进行排序
x_sorted = np.sort(x)# 归一化数据
x_normalized = scaler.fit_transform(x_sorted.reshape(-1, 1)).flatten()# 创建字典存储原始值与归一化值的对应关系
value_map = {original: normalized for original, normalized in zip(x_sorted, x_normalized)}# 深度学习模型处理(示例代码省略)# 假设预测的归一化值为 predicted_normalized
predicted_normalized = np.random.rand(10)  # 示例:10个随机生成的归一化值# 使用插值来反归一化
# 创建插值函数
interp_function = interp1d(x_normalized, x_sorted, bounds_error=False, fill_value="extrapolate")# 获取对应的原始值
predicted_original = interp_function(predicted_normalized)print("归一化后的预测值:", predicted_normalized)
print("对应的原始值:", predicted_original)

输出

归一化后的预测值: [0.01215447 0.96987883 0.04315991 0.89114311 0.52770111 0.99296480.07379656 0.55385428 0.96930254 0.52309784]
对应的原始值: [ 2.27449952 96.09964077  5.31200141 88.38615894 52.78092728 98.361298158.31337469 55.34306884 96.04318341 52.32996038]

说明

  • 插值函数interp1dscipy.interpolate 中导入,可以根据归一化值计算相应的原始值。通过设置 bounds_error=Falsefill_value="extrapolate",可以处理在 value_map.values() 中找不到的值(即插值和外推)。通过使用插值技术,可以避免在查找字典中直接索引可能不存在的归一化值,从而确保代码的健壮性和有效性。
  • 适用性:这种方法适用于在归一化数据中查找最接近的原始值,确保获得合理的输出,而不是直接找不到值时导致错误。

相关文章:

利用字典对归一化后的数据0误差还原

假设我对精度要求很高,高到无法容忍有任何误差,那么我先将x按照大小排序,然后归一化,用字典将归一化前后的x存储下来,在深度学习时使用归一化后的x进行处理,但是最后画图等处理时,我用字典取出归…...

HarmonyOS:UIAbility组件概述

一、概述 UIAbility组件是一种包含UI的应用组件,主要用于和用户交互。 UIAbility的设计理念: 原生支持应用组件级的跨端迁移和多端协同。支持多设备和多窗口形态。 UIAbility划分原则与建议: UIAbility组件是系统调度的基本单元&#xff0c…...

12寸半导体厂说的华夫区是什么意思

1\什么是华夫板 在半导体行业中,“华夫区”通常指的是“华夫板”(Waffle Slab),这是一种特殊设计的楼板,其表面具有许多均匀分布的孔洞,这些孔洞形成了回风通道,用于电子芯片厂房等对空气洁净度有极高要求的环境。华夫板的设计和施工对于保证洁净室的功能发挥至关重要。…...

数据结构之链式结构二叉树的实现(进阶版)

本篇文章主要讲解链式二叉树的层序遍历以及判断是否为一棵完全二叉树 二者将会用到之前学过的队列知识,是将队列和二叉树的整合 一、如何将之前已经写好的文件加入当前的编译界面 如图所示,打开我们需要加入文件所在的文件夹,找到我们要加…...

【高等数学】3-2多元函数积分学

1. 二重积分 可以想象你有一块不规则的平面薄板,它在一个平面区域上。二重积分就是用来求这个薄板的质量(假设薄板的面密度函数是)。 把区域划分成许多非常小的小方块(类似于把一块地划分成很多小格子),在每个小方块上,密度近似看成是一个常数,然后把每个小方块的质量加…...

【传知代码】智慧医疗:纹理特征VS卷积特征

🍑个人主页:Jupiter. 🚀 所属专栏:传知代码 欢迎大家点赞收藏评论😊 目录 论文概述纹理特征和深度卷积特征算法流程数据预处理方法纹理特征提取深度卷积特征提取分类网络搭建代码复现BLS_Model.py文件——分类器搭建py…...

Python-创建并调用自定义文件中的模块/函数

背景:在Python编程中,我们常常需要创建自己的专属文件,以便帮助我们更高效,快捷地完成任务。那么在Python中我们怎么创建并调用自己文件中的模块/函数呢? 在Python中调用自定义文件,通常是指调用自己编写的Python模块…...

Kali Linux

起源与背景 Kali Linux是一个基于Debian的开源Linux发行版,专门为信息安全工作者和渗透测试员设计。它是由Offensive Security Ltd.开发和维护的,作为BackTrack的继承者而诞生。BackTrack是一个流行的安全测试发行版,但为了提供更好的支持和…...

DiffusionDet: Diffusion Model for Object Detection—用于对象检测的扩散模型论文解析

DiffusionDet: Diffusion Model for Object Detection—用于对象检测的扩散模型论文解析 这是一篇发表在CVPR 2023的一篇论文,因为自己本身的研究方向是目标跟踪,之前看了一点使用扩散模型进行多跟踪的论文,里面提到了DiffusionDet因此学习一…...

深度学习基础知识-编解码结构理论超详细讲解

编解码结构(Encoder-Decoder)是一种应用广泛且高效的神经网络架构,最早用于序列到序列(Seq2Seq)任务,如机器翻译、图像生成、文本生成等。随着深度学习的发展,编解码结构不断演变出多种模型变体…...

探讨Java深搜算法的学习笔记

大家好,我是 V 哥。深度优先搜索(DFS)是一种图遍历算法,它优先深入到某条路径的尽头,再回溯到前一个节点继续探索其他路径,直到找到目标或遍历完整个图。DFS的应用场景广泛,可以用于路径搜索、连…...

408——操作系统(持续更新)

文章目录 一、操作系统的概念及特征1.1 计算机系统的概念1.2 操作系统的基本特征 二、操作系统的功能和接口2.1 操作系统作为计算机资源的管理者2.2 操作系统作为用户和计算机硬件系统之间的接口2.3 操作系统实现对计算机资源的扩充 三、操作系统的发展和分类四、操作系统的运行…...

架构师之路-学渣到学霸历程-37

Nginx的热部署实验 本次分享的就是nginx的升级以及降级,实验中其实很多操作都需要理解,实际操作不难,但是需要全面理解这个动作,敲这个命令是用来干什么的?借着这个笔记可以试一下;go~! 1、ng…...

CSRF与SSRF

csrf(跨站请求伪造)的原理: csrf全称是跨站请求伪造(cross-site request forgery),也被称为one-click attack 或者 session riding scrf攻击利用网站对于用户网页浏览器的信任,劫持用户当前已登录的web应用程序,去执行分用户本意的操作。 利…...

RabbitMQ 存储机制

一、消息存储机制 不管是持久化的消息还是非持久化的消息都可以被写入到磁盘。持久化的消息在到达队列时就被写入到磁盘,非持久化的消息一般只保存在内存中,在内存吃紧的时候会被换入到磁盘中,以节省内存空间。这两种类型的消息的落盘处理都…...

【Java SE】类型转换

类型转换是将一个值从一种类型转换为另一种类型的过程。该过程如果从低精度数据类型转为高精度数据类型,则不会发生溢出并且总能成功,如果从高精度数据类型转为低精度数据类型,则会有信息丢失且可能失败。类型转换又可分为隐式转换和显式转换…...

JAVA:常见 JSON 库的技术详解

1、简述 在现代应用开发中,JSON(JavaScript Object Notation)已成为数据交换的标准格式。Java 提供了多种方式将对象转换为 JSON 或从 JSON 转换为对象,常见的库包括 Jackson、Gson 和 org.json。本文将介绍几种常用的 JSON 处理…...

Redis缓存击穿、雪崩、穿透解决方案

Redis 缓存击穿、雪崩、穿透解决方案 1、首先看看逻辑方面是否还有优化空间,正常流程查询redis中获取不到数据,则去数据库获取,但数据库查询并返回时,调用异步方法,将该数据存储进redis中,并设置一个较短的…...

C++ 优先算法——盛最多水的容器(双指针)

目录 题目:盛最多水的容器 1. 题目解析 2. 算法原理 3. 代码实现 题目:盛最多水的容器 1. 题目解析 题目截图: 如图所示: 水的高度一定是由较低的那条线的高度决定的:例1图中,是由7决定的,然后求出…...

blender 小车建模 建模 学习笔记

一、学习blender视频教程链接 案例4:狂奔的小车_建模_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Bt4y1E7qn?p14&spm_id_from333.788.videopod.episodes&vd_sourced0ea58f1127eed138a4ba5421c577eb1 二、开始建模 (1)创…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

CSS设置元素的宽度根据其内容自动调整

width: fit-content 是 CSS 中的一个属性值&#xff0c;用于设置元素的宽度根据其内容自动调整&#xff0c;确保宽度刚好容纳内容而不会超出。 效果对比 默认情况&#xff08;width: auto&#xff09;&#xff1a; 块级元素&#xff08;如 <div>&#xff09;会占满父容器…...

《C++ 模板》

目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板&#xff0c;就像一个模具&#xff0c;里面可以将不同类型的材料做成一个形状&#xff0c;其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式&#xff1a;templa…...

Java毕业设计:WML信息查询与后端信息发布系统开发

JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发&#xff0c;实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构&#xff0c;服务器端使用Java Servlet处理请求&#xff0c;数据库采用MySQL存储信息&#xff0…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

多元隐函数 偏导公式

我们来推导隐函数 z z ( x , y ) z z(x, y) zz(x,y) 的偏导公式&#xff0c;给定一个隐函数关系&#xff1a; F ( x , y , z ( x , y ) ) 0 F(x, y, z(x, y)) 0 F(x,y,z(x,y))0 &#x1f9e0; 目标&#xff1a; 求 ∂ z ∂ x \frac{\partial z}{\partial x} ∂x∂z​、 …...

[拓扑优化] 1.概述

常见的拓扑优化方法有&#xff1a;均匀化法、变密度法、渐进结构优化法、水平集法、移动可变形组件法等。 常见的数值计算方法有&#xff1a;有限元法、有限差分法、边界元法、离散元法、无网格法、扩展有限元法、等几何分析等。 将上述数值计算方法与拓扑优化方法结合&#…...

【笔记】AI Agent 项目 SUNA 部署 之 Docker 构建记录

#工作记录 构建过程记录 Microsoft Windows [Version 10.0.27871.1000] (c) Microsoft Corporation. All rights reserved.(suna-py3.12) F:\PythonProjects\suna>python setup.py --admin███████╗██╗ ██╗███╗ ██╗ █████╗ ██╔════╝…...

Selenium 查找页面元素的方式

Selenium 查找页面元素的方式 Selenium 提供了多种方法来查找网页中的元素&#xff0c;以下是主要的定位方式&#xff1a; 基本定位方式 通过ID定位 driver.find_element(By.ID, "element_id")通过Name定位 driver.find_element(By.NAME, "element_name"…...

宠物车载安全座椅市场报告:解读行业趋势与投资前景

一、什么是宠物车载安全座椅&#xff1f; 宠物车载安全座椅是一种专为宠物设计的车内固定装置&#xff0c;旨在保障宠物在乘车过程中的安全性与舒适性。它通常由高强度材料制成&#xff0c;具备良好的缓冲性能&#xff0c;并可通过安全带或ISOFIX接口固定于车内。 近年来&…...