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

如何利用Python进行数据归一化?

1. 知识简介

数据归一化是数据预处理的一项重要步骤,它对于提高模型性能、加速模型训练、避免数值计算问题以及提高模型的泛化能力都具有重要作用。进行数据归一化可以起到以下作用:消除量纲影响,加速模型收敛,提高模型性能,防止数值计算问题,提高模型泛化能,更好地处理异常值。
建模
辨识方法
方法

正负指标

3.python中实现

3.1 正向型指标和负向型指标

正向型指标的取值范围在0到正无穷,数值越大表示绩效越好。在归一化时,通常使用 Min-Max 归一化方法,将指标缩放到0到1之间。
负向型指标的取值范围在负无穷到0之间,数值越接近0表示绩效越好。在归一化时,也使用 Min-Max 归一化方法,将指标缩放到0到1之间,但需要注意取值范围的定义。

import numpy as np
import pandas as pddef min_max_normalize(data, method='positive', feature_range=(0, 1)):"""Min-Max归一化Parameters:- data: 需要进行处理的DataFrame- method: 归一化方向,'positive'为正向,'negative'为逆向- feature_range: 设置归一化后的最小最大值,默认为 (0, 1)Returns:- normalized_data: 归一化后的DataFrame"""y_min, y_max = feature_rangenormalized_data = pd.DataFrame()for col in data.columns:col_max, col_min = data[col].max(), data[col].min()if method == 'negative':normalized_values = (y_max - y_min) * (col_max - data[col]) / (col_max - col_min) + y_minelif method == 'positive':normalized_values = (y_max - y_min) * (data[col] - col_min) / (col_max - col_min) + y_minnormalized_data[col] = normalized_values.valuesreturn normalized_data# 示例用法
# data = pd.DataFrame({'amount': [20, 40, 30, 26], 'cost': [3, 6, 2, 10]})
# normalized_data = min_max_normalize(data[['cost']], method='negative', feature_range=(0, 1))
3.2 中心倾向指标

中心倾向指标的取值范围一般视数据情况而定,数值越靠近中间位置表示绩效越好。在归一化时,通常使用 Min-Max 归一化方法,将指标缩放到0到1之间。
一些场景举例,比如财务绩效数据,利润、营业收入等中心倾向稳定的话,现实场景中,代表经营状况越好,比如生产质量控制越靠近设置的目标值越符合要求。
若是基于数据的情况,取中心位置的话,可以用以下方法:

import numpy as np
import pandas as pddef mid_normalize(data, feature_range=(0, 1)):"""中心倾向指标归一化Parameters:- data: 需要进行处理的DataFrame- feature_range: 设置归一化后的最小最大值,默认为 (0, 1)Returns:- normalized_data: 归一化后的DataFrame"""y_min, y_max = feature_rangenormalized_data = pd.DataFrame()for col in data.columns:col_max, col_min = data[col].max(), data[col].min()col_mid = (col_max + col_min) / 2normalized_values = data[col].map(lambda x: 2 * (x - col_min) / (col_max - col_min) if x < col_mid else 2 * (col_max - x) / (col_max - col_min))normalized_values *= (y_max - y_min)normalized_data[col] = normalized_values.valuesreturn normalized_data# 示例用法
#data=pd.DataFrame({'ph':[2,5,7,10,12],
#                  'mid':[100,20,50,70,90],
#                  'temperature':[-10,10,25,30,40]})
# normalized_data=mid_normalize(data[['ph', 'mid']])

若是有给定的中心值,则可以参考一下用法:

import pandas as pddef mid_normalize(data, best_values=None, feature_range=(0, 1)):"""中心倾向指标归一化Parameters:- data: 需要进行处理的DataFrame- best_values: 中心指标值,如果为None,则使用(feature_range[0] + feature_range[1]) / 2- feature_range: 设置归一化后的最小最大值,默认为 (0, 1)Returns:- normalized_data: 归一化后的DataFrame"""y_min, y_max = feature_rangenormalized_data = pd.DataFrame()if data.empty:raise ValueError("Input DataFrame is empty.")for col_index, col in enumerate(data.columns):c_max, c_min = data[col].max(), data[col].min()if best_values is None:c_mid = (y_max + y_min) / 2else:c_mid = best_values[col_index]normalized_values = 1 - abs(data[col] - c_mid) / (c_max - c_min)normalized_values *= (y_max - y_min)normalized_data[col] = normalized_valuesreturn normalized_data# 示例用法
#data=pd.DataFrame({'ph':[2,5,7,10,12],
#                  'mid':[100,20,50,70,90],
#                  'temperature':[-10,10,25,30,40]})
#normalized_data = mid_normalize(data[['ph', 'mid']], [7, 50])
3.3 区间型指标

区间型指标是一种度量指标,其特点是具有明确的数值区间,通常表示一个范围或区间内的值。这种类型的指标提供了更多的信息,而不仅仅是单一的数值。区间型指标在统计学、经济学、工程学、生态学等领域经常被使用。

import numpy as np
import pandas as pddef section_normalize(data, feature_range=(0, 1), target_section=(40, 60)):"""区间型指标归一化Parameters:- data: 需要进行处理的DataFrame- feature_range: 设置归一化后的最小最大值,默认为 (0, 1)- target_section: 目标区间,表示在该区间内的值将被保持不变Returns:- normalized_data: 归一化后的DataFrame"""y_min, y_max = feature_rangenormalized_data = pd.DataFrame()if data.empty:raise ValueError("Input DataFrame is empty.")for col in data.columns:col_max, col_min = data[col].max(), data[col].min()distance_to_min = max((target_section[0] - col_min), 0)distance_to_max = max((col_max - target_section[1]), 0)c = distance_to_min + distance_to_max# 区间映射函数简化normalized_values = 1 - np.abs(data[col] - np.mean(target_section)) / c# 当数值位于目标区间内时,将归一化的值设为1mask = (data[col] >= target_section[0]) & (data[col] <= target_section[1])normalized_values[mask] = 1normalized_values = np.clip(normalized_values, 0, 1)normalized_values *= (y_max - y_min)# 标记后输出normalized_data[col] = normalized_valuesreturn normalized_data# 示例用法
#  normalized_data = section_normalize(data[['temperature']], target_section=(20, 30))

4.后记

数据归一化是数据分析和机器学习中必不可少的步骤之一。它可以消除量纲影响,提高模型的性能和稳定性,加快模型的收敛速度,并方便特征选择过程。通过归一化,可以更好地理解和利用数据,提高模型的准确性和可解释性。
在进行数据归一化时,需要注意选择合适的归一化范围和方法,处理异常值,确定归一化顺序,并注意归一化的逆操作。通过合理的数据归一化处理,可以更好地利用数据进行分析和建模。

相关文章:

如何利用Python进行数据归一化?

1. 知识简介 数据归一化是数据预处理的一项重要步骤&#xff0c;它对于提高模型性能、加速模型训练、避免数值计算问题以及提高模型的泛化能力都具有重要作用。进行数据归一化可以起到以下作用&#xff1a;消除量纲影响&#xff0c;加速模型收敛&#xff0c;提高模型性能&…...

Linux 基本语句_13_消息队列

概念&#xff1a; 不同进程能通过消息队列来进行通信&#xff0c;不同进程也能获取或发送特定类型的消息&#xff0c;即选择性的收发消息。 一般一个程序采取子进程发消息&#xff0c;父进程收消息的模式 常用函数功能&#xff1a; fork(); // 创建子进程 struct msgbuf{ …...

Maven——仓库

Maven坐标和依赖是任何一个构件在Maven世界中的逻辑表示方式&#xff1b;而构件的物理表示方式是文件&#xff0c;Maven通过仓库来统一管理这些文件。 1、何为Maven仓库 在Maven世界中&#xff0c;任何一个依赖、插件或者项目构建的输出&#xff0c;都可以称为构件。例如&…...

Pandas:一个实用高效的Python数据处理库

个人网站 文章首发公众号&#xff1a;小肖学数据分析 导语&#xff1a; Pandas是一个强大且易于使用的Python数据处理库&#xff0c;广泛应用于数据分析和数据科学领域。本文将介绍Pandas库的基本概念、功能和使用方法&#xff0c;并提供详细的示例&#xff0c;帮助小白快速…...

Spring第三课,Lombok工具包下载,对应图书管理系统列表和登录界面的后端代码,分层思想

目录 一、Lombok工具包下载 二、前后端互联的图书管理系统 规范 三、分层思想 三层架构&#xff1a; 1.表现层 2.业务逻辑层 3.数据层 一、Lombok工具包下载 这个工具包是为了做什么呢&#xff1f; 他是为了不去反复的设置setting and getting 而去产生的工具包 ⚠️工具…...

DDoS高防IP到底是什么?

DDoS高防IP是提供一个带防御的IP&#xff0c;主要是针对网络中的DDoS攻击进行保护&#xff0c;是针对互联网服务器遭受大流量的DDoS攻击后&#xff0c;导致服务不可用的情况下&#xff0c;用户可以通过配置高防IP&#xff0c;将攻击流量引流到高防IP上&#xff0c;从而确保源站…...

el-row错位问题解决

<el-row type"flex" style"flex-wrap:wrap">...

torch indices x[indices] 内存不足崩溃,python进程锁报错。

报错 Process Process-167: Traceback (most recent call last):File "/usr/lib/python3.10/multiprocessing/process.py", line 317, in _bootstraputil._exit_function()File "/usr/lib/python3.10/multiprocessing/util.py", line 360, in _exit_funct…...

第二证券:机构争分夺秒抢滩 金融大模型落地为时尚早

本年以来&#xff0c;大模型席卷金融业&#xff0c;一夜之间&#xff0c;简直悉数金融场景都在探索适配大模型接口。但是&#xff0c;志向丰满&#xff0c;实践骨感。有大型金融组织IT部分人士比方&#xff0c;金融大模型从战略规划到安顿落地&#xff0c;有着从“卖家秀”走到…...

C#WPF使用MaterialDesign 显示带遮罩的对话框

第一步定义对话框 <UserControlx:Class="TemplateDemo.Views.Edit.UCEditUser"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.m…...

Nuxt.js:下一代Web开发框架的革命性力量

文章目录 一、Nuxt.js简介二、Nuxt.js的特点1. 集成Vue.js和Node.js2. 自动代码分割和优化3. 服务端渲染&#xff08;SSR&#xff09;4. 强大的路由管理5. 丰富的插件系统 三、Nuxt.js的优势1. 提高开发效率2. 降低维护成本3. 提高用户体验 四、Nuxt.js在实际应用中的案例1. 电…...

【JavaEE初阶】死锁问题

目录 一、死锁的三种典型场景 1、一个线程&#xff0c;一把锁 2、两个线程&#xff0c;两把锁 3、N个线程&#xff0c;M把锁 死锁&#xff0c;是多线程代码中的一类经典问题。我们知道加锁是能解决线程安全问题的&#xff0c;但是如果加锁的方式不当&#xff0c;就可能产生死…...

uniapp 打包的 IOS打开白屏 uniapp打包页面空白

uniapp的路由跟vue一样,有hash模式和history模式, 使用 URL 的 hash 来模拟一个完整的 URL,于是当 URL 改变时,页面不会重新加载。 如果不想要很丑的 hash,我们可以用路由的 history 模式,这种模式充分利用 history.pushState API 来完成 URL 跳转而无须重新加载页面。…...

在 Redis 中使用 JSON 文档:命令行界面(CLI)和 Navicat 集成

Redis&#xff0c;因其极高的性能而闻名&#xff0c;是一款多功能的 NoSQL 数据库&#xff0c;擅长处理键值对。虽然 Redis主要用于处理简单数据结构&#xff0c;但是同样支持更多复杂的数据类型&#xff0c;如列表、集合甚至是 JSON 文件。在本文&#xff0c;我们将深入到 Red…...

Win Server 2019远程桌面服务部署

一、添加远程桌面授权服务 服务器管理 - 添加角色和功能打开“添加角色和功能向导”窗口&#xff0c;选择基于角色或给予功能安装&#xff1a; 打开服务器管理&#xff0c;打开角色和功能&#xff0c;添加远程回话主机和远程桌面授权 image.png 以上配置完成后使用期限为120…...

vue3-在自定义hooks使用useRouter 报错问题

文章目录 前言一、报错分析报错的Vue warn截图&#xff1a;查看文档 二、那么在hook要怎么引入路由呢&#xff1f; 前言 记录在vue3项目中&#xff0c;hook使用useRouter 报错问题 一、报错分析 报错的Vue warn截图&#xff1a; 警告 inject() can only be used inside setup…...

深度学习框架:Pytorch与Keras的区别与使用方法

☁️主页 Nowl &#x1f525;专栏《机器学习实战》 《机器学习》 &#x1f4d1;君子坐而论道&#xff0c;少年起而行之 文章目录 Pytorch与Keras介绍 Pytorch 模型定义 模型编译 模型训练 输入格式 完整代码 Keras 模型定义 模型编译 模型训练 输入格式 完整代…...

1145. 北极通讯网络(Kruskal,并查集维护)

北极的某区域共有 n 座村庄&#xff0c;每座村庄的坐标用一对整数 (x,y) 表示。 为了加强联系&#xff0c;决定在村庄之间建立通讯网络&#xff0c;使每两座村庄之间都可以直接或间接通讯。 通讯工具可以是无线电收发机&#xff0c;也可以是卫星设备。 无线电收发机有多种不…...

【23-24 秋学期】NNDL 作业9 RNN - SRN

简单循环网络&#xff08;Simple Recurrent Network&#xff0c;SRN&#xff09;只有一个隐藏层的神经网络&#xff0e; 目录 1. 实现SRN &#xff08;1&#xff09;使用Numpy &#xff08;2&#xff09;在1的基础上&#xff0c;增加激活函数tanh &#xff08;3&#xff0…...

Docker + Jenkins + Nginx实现前端自动化部署

目录 前言一、前期准备工作1、示例环境2、安装docker3、安装Docker Compose4、安装Git5、安装Nginx和Jenkinsnginx.confdocker-compose.yml 6、启动环境7、验证Nginx8、验证Jenkins 二、Jenkins 自动化部署配置1、设置中文2、安装Publish Over SSH、NodeJS&#xff08;1&#x…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; 思路 使用两个栈&#xff1a;一个存储重复次数&#xff0c;一个存储字符串 遍历输入字符串&#xff1a; 数字处理&#xff1a;遇到数字时&#xff0c;累积计算重复次数左括号处理&#xff1a;保存当前状态&a…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)

本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...

comfyui 工作流中 图生视频 如何增加视频的长度到5秒

comfyUI 工作流怎么可以生成更长的视频。除了硬件显存要求之外还有别的方法吗&#xff1f; 在ComfyUI中实现图生视频并延长到5秒&#xff0c;需要结合多个扩展和技巧。以下是完整解决方案&#xff1a; 核心工作流配置&#xff08;24fps下5秒120帧&#xff09; #mermaid-svg-yP…...

Ray框架:分布式AI训练与调参实践

Ray框架&#xff1a;分布式AI训练与调参实践 系统化学习人工智能网站&#xff08;收藏&#xff09;&#xff1a;https://www.captainbed.cn/flu 文章目录 Ray框架&#xff1a;分布式AI训练与调参实践摘要引言框架架构解析1. 核心组件设计2. 关键技术实现2.1 动态资源调度2.2 …...