【漫话机器学习系列】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 轻松实现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/899817.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开源测试用例管理平台

不可错过的10个开源测试用例管理平台: PingCode、TestLink、Kiwi TCMS、Squash TM、FitNesse、Tuleap、Robot Framework、SpecFlow、TestMaster、Nitrate。 开源测试用例管理工具提供了一种透明、灵活的解决方案,使团队能够在不受限的情况下适应具体的测…

鸿蒙阔折叠Pura X外屏开发适配

首先看下鸿蒙中断点分类 内外屏开合规则 Pura X开合连续规则: 外屏切换到内屏,界面可以直接接续。内屏(锁屏或非锁屏状态)切换到外屏,默认都显示为锁屏的亮屏状态。用户解锁后:对于应用已适配外屏的情况下,应用界面可以接续到外屏。折叠外屏显示展开内屏显示折叠状态…

DRM_CLIENT_CAP_UNIVERSAL_PLANES和DRM_CLIENT_CAP_ATOMIC

drmSetClientCap(fd, DRM_CLIENT_CAP_UNIVERSAL_PLANES, 1); drmSetClientCap(fd, DRM_CLIENT_CAP_ATOMIC, 1); 这两行代码用于启用 Linux DRM(Direct Rendering Manager)客户端的两个关键特性,具体作用如下: 1. drmSetClientCap…

敏捷开发10:精益软件开发和看板kanban开发方法的区别是什么

简介 精益生产起源于丰田生产系统,核心是消除浪费,而看板最初是由丰田用于物料管理的信号卡片,后来被引入软件开发。 Kanban 后来引入到敏捷开发中,强调持续交付和流程可视化。 精益软件开发原则是基于精益生产的原则&#xff0…

用matlab探索卷积神经网络(Convolutional Neural Networks)-3

5.GoogLeNet中的Filters 这里我们探索GoogLeNet中的Filters,首先你需要安装GoogLeNet.在Matlab的APPS里找到Deep Network Designer,然后找到GoogLeNet,安装后的网络是没有右下角的黄色感叹号的,没有安装的神经网络都有黄色感叹号。 一个层&a…

Verilog中X态的危险:仿真漏掉的bug

由于Verilog中X态的微妙语义,RTL仿真可能PASS,而网表仿真却会fail。 目前进行的网表仿真越来越少,这个问题尤其严重,主要是网表仿真比RTL仿真慢得多,因此对整个回归测试而言成本效益不高。 上面的例子中,用Verilog RTL中的case语句描述了一个简单的AND函数,它被综合成AN…

PyTorch中知识蒸馏浅讲

知识蒸馏 在 PyTorch 中,使用 teacher_model.eval() 和冻结教师模型参数是知识蒸馏(Knowledge Distillation)中的关键步骤。 ​1. teacher_model.eval() 的作用 目的: 将教师模型切换到评估模式,影响某些特定层(如 Dropout、BatchNorm)的行为。 ​具体影响: ​Dropo…

Odoo/OpenERP 和 psql 命令行的快速参考总结

Odoo/OpenERP 和 psql 命令行的快速参考总结 psql 命令行选项 选项意义-a从脚本中响应所有输入-A取消表数据输出的对齐模式-c <查询>仅运行一个简单的查询&#xff0c;然后退出-d <数据库名>指定连接的数据库名&#xff08;默认为当前登录用户名&#xff09;-e回显…

ChatGPT 迎来 4o模型:更强大的图像生成能力与潜在风险

OpenAI 对 ChatGPT 进行重大升级&#xff0c;图像生成功能即将迎来新的 4o 模型&#xff0c;并取代原本的 DALLE。此次更新不仅提升了图像生成质量&#xff0c;还增强了对话内容和上传文件的融合能力&#xff0c;使 AI 生成的图像更加智能化和精准化。 4o 模型带来的革新 Ope…

Python 实现的运筹优化系统代码详解(整数规划问题)

一、引言 在数学建模的广袤领域里&#xff0c;整数规划问题占据着极为重要的地位。它广泛应用于工业生产、资源分配、项目管理等诸多实际场景&#xff0c;旨在寻求在一系列约束条件下&#xff0c;使目标函数达到最优&#xff08;最大或最小&#xff09;且决策变量取整数值的解决…

Visual Studio Code配置自动规范代码格式

目录 前言1. 插件安装2. 配置个性化设置2.1 在左下角点击设置按钮 &#xff0c;点击命令面板&#xff08;或者也可以之间按快捷键CtrlShiftP&#xff09;2.2 在弹出的搜索框输入 settings.json&#xff0c;打开首选项&#xff1a;打开工作区设置&#xff1b;2.3 在settings.jso…

【分布式】Hystrix 的核心概念与工作原理​

熔断机制​ Hystrix 的熔断机制就像是电路中的保险丝。当某个服务的失败请求达到一定比例&#xff08;例如 50%&#xff09;或者在一定时间内&#xff08;如 20 秒&#xff09;失败请求数量超过一定阈值&#xff08;如 20 个&#xff09;时&#xff0c;熔断开关就会打开。此时…

TypeScript 中 await 的详解

TypeScript 中 await 的详解 1. 基本概念2. 语法要求3. 工作原理4. 与 Promise 的比较5. 实践中的注意事项总结 本文详细介绍了 TypeScript 中 await 的工作原理、语法要求、与 Promise 的关系以及实践中需要注意的问题&#xff0c;同时针对代码示例进行了优化和补充说明。 1.…

ThreadLocal 深度解析

一、引言 在多线程编程的复杂世界中&#xff0c;数据共享与隔离是一个核心且具有挑战性的问题。ThreadLocal 作为 Java 并发包中的重要工具&#xff0c;为我们提供了一种独特的线程局部变量管理方式&#xff0c;使得每个线程都能拥有自己独立的变量副本&#xff0c;避免了多线…

VMware安装Ubuntu实战分享

在日常开发和学习过程中&#xff0c;很多人都会选择在VMware虚拟机上安装Ubuntu&#xff0c;以便进行Linux环境的体验和开发调试。本文将详细分享在VMware Workstation上安装Ubuntu的全过程&#xff0c;并结合个人经验&#xff0c;提供一些实用的小技巧&#xff0c;帮助大家顺利…

阻止上传可执行程序

点击工具中的文件服务器资源管理器 、然后点击文件屏蔽管理中的文件屏蔽&#xff0c;然后导入目标文件选择要限制的属性即可

微服务面试题:配置中心

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…

系统思考反馈

最近交付的都是一些持续性的项目&#xff0c;越来越感觉到&#xff0c;系统思考和第五项修炼不只是简单的一门课程&#xff0c;它们能真正融入到我们的日常工作和业务中&#xff0c;帮助我们用更清晰的思维方式解决复杂问题&#xff0c;推动团队协作&#xff0c;激发创新。 特…

MMD 转 STL,拓宽 3D 模型应用边界:方法与门道

在 3D 建模与打印领域&#xff0c;不同格式文件间的转换是常见需求。MMD&#xff08;MikuMikuDance&#xff09;模型文件格式常用于动漫角色的舞蹈创作等&#xff0c;而 STL&#xff08;Stereolithography&#xff09;格式则广泛应用于 3D 打印与计算机辅助设计&#xff08;CAD…

C语言 【初始指针】【指针一】

引言 思绪很久&#xff0c;还是决定写一写指针&#xff0c;指针这块内容很多&#xff0c;也不是那么容易说清楚&#xff0c;这里尽可能写地详细&#xff0c;让大家理解指针。&#xff08;未完序&#xff09; 一、内存和地址 在讲指针前&#xff0c;需要有一个对内存和地址的认…