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

【漫话机器学习系列】168.最大最小值缩放(Min-Max Scaling)

在机器学习和数据预处理中,特征缩放(Feature Scaling) 是一个至关重要的步骤,它可以使模型更稳定,提高训练速度,并优化收敛效果。最大最小值缩放(Min-Max Scaling) 是其中最常见的方法之一,它可以将特征值变换到一个固定范围(通常是 [0,1])。本文将详细介绍 Min-Max Scaling 的数学公式、适用场景、优缺点以及如何在 Python 中实现它。


1. 什么是 Min-Max Scaling?

Min-Max Scaling,也称为归一化(Normalization),是一种线性变换方法,用于将数据的数值缩放到特定范围(通常是 [0,1] 或 [-1,1])。其核心思想是保持数据的相对大小,但将其拉伸或压缩到目标范围。

公式如下:

X_i' = \frac{X_i - \min(X)}{\max(X) - \min(X)}

其中:

  • X_i' 是归一化后的数据,

  • X_i 是原始数据,

  • min⁡(X) 是特征中的最小值,

  • max⁡(X) 是特征中的最大值。

这样变换后,所有数据点都会被映射到 [0,1] 之间。


2. Min-Max Scaling 的数学原理

(1)线性变换

Min-Max Scaling 通过线性变换,使数据按照比例缩放到指定范围。设原始数据集 X 在 [X_{\min}, X_{\max}] 之间,而我们希望转换后的数据在 [a, b] 之间(通常是 [0,1]),那么变换公式为:

X_i' = a + \frac{(X_i - X_{\min}) (b - a)}{X_{\max} - X_{\min}}

当 a=0 且 b=1 时,就得到了标准的 Min-Max Scaling 公式。

(2)如何映射数据

  • X_i = X_{\min}​ 时,X_i' = 0

  • X_i = X_{\max}​ 时,X_i' = 1

  • 介于最小值和最大值之间的数据,按比例映射到 [0,1] 内。

这种变换不会改变数据的分布形态,但会影响数据的范围。


3. Min-Max Scaling 的优缺点

优点

  1. 保持原始数据的分布形态:不会改变数据的相对大小,适用于已经有界的数据,如年龄(通常在 0 到 100 之间)。

  2. 适用于数据范围已知的情况:如图像数据(像素值通常在 0 到 255 之间),转换后数据会处于统一的区间,有助于模型收敛。

  3. 计算简单,易于实现:只需要计算最小值和最大值,进行一次线性变换即可。

缺点

  1. 对异常值(Outliers)敏感:如果数据中存在异常值(如极端大或极端小的值),它们会影响最大值和最小值,从而影响所有数据的缩放。

  2. 依赖于数据范围:如果数据范围发生变化(如在不同批次数据上应用 Min-Max Scaling),那么缩放后的数据可能不一致。


4. 适用场景

Min-Max Scaling 适用于:

  • 神经网络:神经网络的输入通常需要归一化到 [0,1] 或 [-1,1],Min-Max Scaling 是常用的预处理方法。

  • K 近邻(KNN)和支持向量机(SVM):这些模型依赖于距离计算,数据缩放有助于提高模型性能。

  • 图像处理:图像像素值通常位于 [0, 255],缩放到 [0,1] 有助于提高模型稳定性。

不适用于:

  • 具有异常值的数据集:可以考虑使用 RobustScaler标准化(Standardization) 方法。


5. 在 Python 中实现 Min-Max Scaling

在 Python 中,可以使用 sklearn.preprocessing.MinMaxScaler 轻松实现 Min-Max Scaling:

(1)使用 Scikit-Learn

from sklearn.preprocessing import MinMaxScaler
import numpy as np# 示例数据
data = np.array([[10], [20], [30], [40], [50]])# 创建 MinMaxScaler,默认缩放到 [0,1]
scaler = MinMaxScaler()# 进行归一化
scaled_data = scaler.fit_transform(data)print(scaled_data)

 运行结果

[[0.  ][0.25][0.5 ][0.75][1.  ]]

(2)手动实现 Min-Max Scaling

如果不使用 sklearn,可以手动计算:

import numpy as npdef min_max_scaling(data):min_val = np.min(data)max_val = np.max(data)return (data - min_val) / (max_val - min_val)data = np.array([10, 20, 30, 40, 50])
scaled_data = min_max_scaling(data)
print(scaled_data)

运行结果 

[0.   0.25 0.5  0.75 1.  ]


6. Min-Max Scaling vs. Z-Score 标准化

Min-Max Scaling 与 Z-Score 标准化(Standardization) 是两种常见的特征缩放方法,它们的主要区别如下:

特性Min-Max ScalingZ-Score 标准化
公式X' = \frac{X - X_{\min}}{X_{\max} - X_{\min}}X' = \frac{X - \mu}{\sigma}
结果范围[0,1](或指定范围)无固定范围,均值 0,标准差 1
适用场景适用于已知范围的数据适用于正态分布数据
对异常值的影响受异常值影响大受异常值影响小

当数据包含异常值时,通常更适合使用 Z-Score 标准化(即均值归一化)。


7. 总结

Min-Max Scaling 是一种常用的特征缩放方法,它可以将数据缩放到固定范围(如 [0,1]),使模型更稳定、训练更快。它适用于范围已知的数据,但对异常值敏感,因此在使用时需要考虑数据的分布特性。

核心要点

Min-Max Scaling 通过线性变换将数据缩放到 [0,1]。
适用于神经网络、KNN、SVM 和图像处理等场景。
对异常值敏感,若数据存在异常值,可考虑其他方法。
在 Python 中可使用 sklearn.preprocessing.MinMaxScaler 轻松实现。

相关文章:

【漫话机器学习系列】168.最大最小值缩放(Min-Max Scaling)

在机器学习和数据预处理中,特征缩放(Feature Scaling) 是一个至关重要的步骤,它可以使模型更稳定,提高训练速度,并优化收敛效果。最大最小值缩放(Min-Max Scaling) 是其中最常见的方…...

Spring Boot中对同一接口定义多个切面的示例,分别通过接口方式和注解方式实现切面排序,并对比差异

以下是Spring Boot中对同一接口定义多个切面的示例,分别通过接口方式和注解方式实现切面排序,并对比差异: 一、接口方式实现切面排序 1. 定义接口 // 服务接口 public interface MyService {void methodA();void methodB(); }// 接口实现类…...

基于SpringBoot的高校学术交流平台

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...

数据治理的专题库

数据治理专题库的全面解析 一、专题库的定义与定位 数据治理专题库是围绕特定业务领域或场景构建的专业化数据库,其核心在于业务导向性和自主性。与基础库(如人口、法人、地理信息等跨部门核心实体数据)和主题库(如市场监管中的…...

【MathType】MathType安装和嵌入word

MathType 是一款功能强大的数学公式编辑器,广泛应用于学术论文、教材编写、科研报告等领域。它支持多种数学符号、公式排版,并且与 Microsoft Word、Google Docs、WPS 等办公软件兼容,极大地方便了数学公式的输入和编辑 记录一下安装的过程 …...

mediacodec服务启动时加载media_codecs.xml

media.codec服务启动时, 会创建 implementation::Omx 和 implementation::OmxStore, 构造 Omx时, 会解析codec相关的xml文件,一般从会如下目录中, // from getDefaultSearchDirs() { "/product/etc",&quo…...

Scala(三)

本节课学习了函数式编程,了解到它与Java、C函数式编程的区别;学习了函数的基础,了解到它的基本语法、函数和方法的定义、函数高级。。。学习到函数至简原则,高阶函数,匿名函数等。 函数的定义 函数基本语法 例子&…...

kafka 报错消息太大解决方案 Broker: Message size too large

kafka-configs.sh --bootstrap-server localhost:9092 \ --alter --entity-type topics \ --entity-name sim_result_zy \ --add-config max.message.bytes10485880 学习营课程...

APScheduler定时

异步IO 定时(协程) import asyncio import logging from apscheduler.schedulers.asyncio import AsyncIOScheduler from apscheduler.triggers.cron import CronTriggerlogging.basicConfig(levellogging.INFO) logger logging.getLogger(__name__)class Schedul…...

[GESP202503 C++六级题解]:P11962:树上漫步

[GESP202503 C++六级题解]:P11962:树上漫步 题目描述 小 A 有一棵 n n n 个结点的树,这些结点依次以 1 , 2 , ⋯   , n 1,2,\cdots,n 1,2,⋯,n 标号。 小 A 想在这棵树上漫步。具体来说,小 A 会从树上的某个结点出发,每⼀步可以移动到与当前结点相邻的结点,并且小 A…...

JavaScript基础-常见网页特效案例

在现代Web开发中,JavaScript不仅是处理业务逻辑的核心工具,也是实现丰富交互体验的关键。通过JavaScript,我们可以轻松地为网页添加各种动态效果和交互特性,从而提升用户体验。本文将介绍几种常见的网页特效案例,并提供…...

数据结构4

day4 5.队列 Queue 5.1 特性 队列是只允许再两端进行插入和删除操作的线性表,在队尾插入,在队头删除,插入的一段被称为“队尾”,删除的一端被称为“队头”。队列包括循环队列(顺序队列)、链式队列。结构:先进先出&…...

Rust 为什么不适合开发 GUI

前言 在当今科技蓬勃发展的时代,Rust 编程语言正崭露头角,逐步为世界上诸多重要基础设施提供动力支持。从存储海量信息到应用于 Linux 内核,Rust 展现出强大的实力。然而,当涉及构建 GUI(图形用户界面)时&…...

DisplayPort版本对比

目前视频接口标准基本上被HDMI和DisplayPort两大标准给瓜分天下了。 (1) HDMI由消费电子厂商主导,最新版本(如HDMI 2.1)理论带宽为48Gbps,主要应用于电视、游戏主机及家庭影音设备。 (2&#xf…...

YOLOv12即插即用-Pconv(风车卷积)

1.模块介绍 PinwheelConv(风车状卷积)充分利用了IRST(红外搜索与跟踪)中的高斯分布特性,以极少的参数实现了高效且更大感受野的特性。此外,本文还提出了一种简单而高效的 SD 损失函数,有效缓解了标签 IoU 变化带来的不稳定性。通过与现有卷积模块和损失函数的广泛对比,…...

AI知识补全(十四):零样本学习与少样本学习是什么?

名人说:一笑出门去,千里落花风。——辛弃疾《水调歌头我饮不须劝》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 上一篇:AI知识补全(十三):注意力…...

Pycharm(十一):字符串练习题

1.输入一个字符串,打印所有偶数位上的字符(下标是0,2,4,6...位上的字符) # 练习题1:输入一个字符串,打印所有偶数位上的字符(下标是0,2,4,6...位上的字符) # 1.键盘录入字符串&…...

设计原则之迪米特法则

一、定义 迪米特法则又称为最少知识原则(Law of Demeter,LoD),是一项用于面向对象设计的基本原则之一。该原则强调一个对象应该对其他对象有最少的了解,即一个类不应该知道太多关于其他类的内部细节。 二、好处 迪米…...

Debian系统_主板四个网口1个配置为WAN,3个配置为LAN

Debian系统_主板四个网口1个配置为WAN,3个配置为LAN 一、重新配置网口 1、查看当前网口的状态 ifconfig 或者 ip link show 或者 ls /sys/class/net 2、修改网络配置文件 sudo vi /etc/network/interfaces 注意WAN口的网关地址如果是192.168.3.1的话,L…...

Spring Boot 快速入手

前言:为什么选择 Spring Boot? 🚀 在现代 Java 开发中,Spring Boot 已成为最流行的后端框架之一。无论是小型 Web 应用、企业级系统,还是微服务架构,Spring Boot 都能提供快速开发、自动配置、轻量级部署的…...

Ubuntu Live USB 如何使用

以下是使用 Ubuntu Live USB 的详细指南,涵盖启动、试用系统、安装系统及常用工具操作: 1. 制作 Ubuntu Live USB • 所需工具: • Ubuntu ISO 镜像(从 官网 下载)。 • U盘(至少 4GB,数据将被…...

基于单片机的音乐播放器系统设计

基于单片机的音乐播放器系统设计是一个综合性较强的电子系统开发项目 系统概述 基于单片机的音乐播放器旨在利用单片机的控制功能,结合音频处理电路、存储单元等,实现音乐的播放、暂停、切换、音量调节等功能,可应用于小型便携式音频设备、电子玩具、智能家居背景音乐系统等…...

HttpClient-01.介绍

一.介绍 通过HttpClient,我们可以在Java程序中构造并发送Http请求。要使用HttpClient,就要导入依赖坐标。 核心API: HttpClient:Http客户端,使用它可以发送http请求。 HttpClients:构建器,使…...

2025年win10使用dockerdesktop安装k8s

一、写作背景 百度了一圈, 要么教程老,很多操作步骤冗余, 要么跑不通,或者提供的链接失效等情况。 二、看前须知 1、安装过程使用的AI辅助, 因为参考的部分博客卡柱了。 2、如果操作过程中遇到卡顿, …...

技术回顾day2

1.获取文件列表 流程:前端根据查询条件封装查询信息,后端接收后进行封装,封装为FileInfoQuery,根据fileInfoQuery使用mybatis的动态sql来进行查询。 2.文件分片上传 每次上传需要上传包括(文件名字,文件,md5值&#…...

软件工程-UML

例图,类图,状态图,顺序图,活动图 目录 例图 类图 状态图 顺序图 活动图 例图 例图由四个元素组成,参与者、用例、系统边界、参与者和用例之间的关系 参与者用一个小人表示,用例用椭圆表示&#xff…...

赛逸展2025“创新引擎”启动:限量席位,点亮科技绿色新征程

当今时代,科技革新与绿色发展已然成为推动社会进步的双引擎。2025第七届亚洲消费电子技术贸易展(赛逸展)敏锐捕捉这一趋势,重磅打造“科技创新专区”,并面向科技、绿色企业吹响限量招募号角。 这个独具特色的专区紧扣…...

前后台系统

前后台系统(Foreground/Background System)是一种常见的嵌入式系统编程模型,尤其是在那些不需要复杂操作系统的简单系统中。这种系统架构通常用于实时性要求不是极端苛刻的环境,但在响应外部事件时仍需要一定的及时性。下面我将详…...

VHT AMPDU

A - MPDU 由一个或多个 A - MPDU 子帧以及可变数量的 EOF填充子帧组成。 在 VHT中,存在如下填充: 一个 A - MPDU 子帧的填充子字段中有 0 - 3 个字节。 EOF 填充字段中有零个或多个 EOF 填充子帧。 EOF 填充子帧中EOF填充字节中有 0 - 3 个字节。 A - MPDU 帧结束前填充(A -…...

Spring框架如何做EhCache缓存?

在Spring框架中,缓存是一种常见的优化手段,用于减少对数据库或其他资源的访问次数,从而提高应用性能。Spring提供了强大的缓存抽象,支持多种缓存实现(如EhCache、Redis、Caffeine等),并可以通过…...

助力 Windows 文件管理:重命名与清理重复文件软件精选

软件介绍 在日常的电脑使用中,高效管理文件至关重要。接下来为大家介绍几款实用软件,能助您轻松搞定文件管理难题。 AdvancedRenamer:全能批量重命名利器 专为 Windows 系统打造的 AdvancedRenamer,功能堪称强大。无论是文本替…...

重建二叉树(C++)

目录 1 问题描述 1.1 示例1 1.2 示例2 1.3 示例3 2 解题思路 3 代码实现 4 代码解析 4.1 初始化 4.2 递归部分 4.3 主逻辑 5 总结 1 问题描述 给定节点数为 n 的二叉树的前序遍历和中序遍历结果,请重建出该二叉树并返回它的头结点。 例如输入前序遍历序…...

Go+Gin实现安全多文件上传:带MD5校验的完整解决方案

后端 package mainimport ("encoding/json""fmt""log""net/http""os""path/filepath""github.com/gin-contrib/cors""github.com/gin-gonic/gin" )// 前端传来的文件元数据 type FileMetaRe…...

SwanLab Slack通知插件:让AI训练状态同步更及时

在AI模型训练的过程中,开发者常常面临一个难题:如何及时跟踪训练状态?无论是实验超参数的调整、关键指标的变化,还是意外中断的告警,传统的监控方式往往依赖手动刷新日志或反复检查终端,这不仅效率低下&…...

JavaScript元素尺寸与位置

目录 client 家族与 offset 家族 一、client 家族:内容区域 内边距 示例代码 应用场景 二、offset 家族:内容区域 内边距 边框 滚动条 示例代码 应用场景 三、综合应用场景 1. 动态调整元素高度 2. 拖拽元素 3. 判断元素是否在视口内 四…...

IS-IS:单区域集成配置与多区域集成配置

一、IS-IS概述 IS-IS(Intermediate System to Intermediate System) 是一种链路状态内部网关协议(IGP),设计用于自治系统(AS)内部的路由选择。最初由ISO为OSI模型的无连接网络服务(…...

Cesium学习(未完继续)

添加底图 viewer.imageryLayers.addImageryProvider(imageryProvider)常见 ImageryProvider 实现类 ArcGisMapServerImageryProvider:用于从 ArcGIS Server 获取影像数据。 BingMapsImageryProvider:用于从 Bing Maps 获取影像数据。 OpenStreetMapIm…...

【学Rust写CAD】22 双圆径向渐变的结构体(two_circle_radial_gradient.rs)

源码 //two_circle_radial_gradient.rs //! 定义双圆径向渐变的结构体和相关功能/// 表示一个双圆径向渐变的源 /// /// 该结构体描述了两个圆之间的渐变,支持矩阵变换和颜色查找表优化 #[derive(Debug, Clone, PartialEq)] pub struct TwoCircleRadialGradientSou…...

基于SpringAOP面向切面编程的一些实践(日志记录、权限控制、统一异常处理)

前言 Spring框架中的AOP(面向切面编程) 通过上面的文章我们了解到了AOP面向切面编程的思想,接下来通过一些实践,去更加深入的了解我们所学到的知识。 简单回顾一下AOP的常见应用场景 日志记录:记录方法入参、返回值、执…...

acwing 5438. 密接牛追踪2

农夫约翰有 NN 头奶牛排成一排,从左到右依次编号为 1∼N。 不幸的是,有一种传染病正在蔓延。 最开始时,只有一部分奶牛受到感染。 每经过一个晚上,受感染的牛就会将病毒传染给它左右两侧的牛(如果有的话&#xff09…...

【Linux】线程池

目录 线程池 日志 线程池 在程序中,会预先创建一批线程,在内部会有一个叫任务队列task_queue的东西,未来如果有任务要处理,就把任务push到任务队列里,然后自动有线程去任务队列里拿任务并处理,如果没有任…...

【11408】考研英语长难句解析策略:三步断开与简化法,快速提升阅读得分

2025.04.01 英语断开长难句分析主谓心得 简化长难句心得 英语 断开长难句 在一些长难句中,有时从句的连词会被省略,且没有标点将其隔开,此时就无法通过标点和连接词来断开长难句。那么我们只能够通过分析主谓来断开长难句。 分析主谓 谓语…...

Spring Cloud 2023.x安全升级:OAuth2.1与JWT动态轮换实战

引言:当安全遇上云原生,零停机密钥轮换成为刚需 在微服务架构中,OAuth2.1与JWT已成为身份验证的黄金标准,但传统方案存在两大痛点: 密钥轮换风险:手动替换JWT密钥需重启服务,导致短暂鉴权中断&…...

Vue3.5 企业级管理系统实战(十二):组件尺寸及多语言实现

1 组件尺寸切换 1.1 用 Pinia 进行 Size 的持久化存储 首先,在 src/plugins/element.ts 中增加 size 类型,代码如下: //src/plugins/element.ts import type { App } from "vue";import { ElMessage, ElNotification, ElMessageBo…...

15:00开始面试,15:08就出来了,问的问题有点变态。。。

从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到8月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%…...

Java学习路线 - 第三阶段笔记

Java学习路线 - 第三阶段笔记 Java高级特性(2-3个月) 1. 集合框架深入 1.1 List详解 ArrayList:基于动态数组实现,随机访问高效,插入删除效率低LinkedList:基于双向链表实现,插入删除高效&a…...

【无标题】Scala函数基础

函数和方法的区别 1) 核心概念 (1) 为完成某一功能的程序语句的集合,称为函数。 (2) 类中的函数称之方法。 2) 案例实操 (1) Scala 语言可以在任何的语法结构中声明…...

微信登录、商品浏览前瞻

一.业务效果 二.所需技术...

自动化工作流工具的综合对比与推荐

最近收到很多朋友私信我说:“刷短视频的时候,总是刷到自动化工作流的工具,有好多直播间都在宣传,不知道哪款工具好”。我花了点时间,做了一下测试,大家可以参考一下,以下内容: 以下…...

可实现黑屏与蓝屏反应的屏幕隐私保护软件分享

软件介绍 在信息安全备受关注的当下,一款能够有效保护屏幕隐私的软件 —— 防窥助手,悄然问世。它由吾爱的 遗憾迟香精心开发,为用户的屏幕隐私防护带来全新体验。 独特原理,精准守护 防窥助手的运行原理相当巧妙,它…...