Min-Max(算法)归一化实例解析(内容由 AI 生成)

Min-Max归一化实例解析

Min-Max 归一化的简单理解是:

当前值 - 该维度的最小值) / 该维度的数值范围 (最大值 - 最小值)

再简单理解,就是比例化 ,当前维度范围 的比例化

Min-Max 归一化是数据预处理领域的标准算法 ,其核心价值是通过 "固定步骤 + 数学公式"

居然是一个算法。 "固定步骤 + 数学公式"

一、Min-Max归一化核心概念

Min-Max归一化(也称为离差标准化)是数据预处理中常用的线性归一化方法,其核心作用是将原始数据映射到指定的固定区间(最常用区间为0,1,也可根据需求调整为1,5-1,1等),消除不同特征间的量纲和尺度差异。

其核心公式为(以目标区间0,1为例):

Xnorm=X−XminXmax−XminX_{norm} = \frac{X - X_{min}}{X_{max} - X_{min}}Xnorm=Xmax−XminX−Xmin

其中各参数含义:

  • X:原始数据样本的值

  • X:该特征维度下所有原始数据的最小值

  • X:该特征维度下所有原始数据的最大值

  • X:归一化后的数据值

若需映射到其他区间a,b,公式可调整为:

Xnorm=a+(X−Xmin)×(b−a)Xmax−XminX_{norm} = a + \frac{(X - X_{min}) \times (b - a)}{X_{max} - X_{min}}Xnorm=a+Xmax−Xmin(X−Xmin)×(b−a)

二、实际案例演算(映射到0,1区间)

案例背景:学生成绩标准化

某班级5名学生的数学成绩(满分150分)和语文成绩(满分120分)原始数据如下表,由于两科满分不同,尺度存在差异,需通过Min-Max归一化消除差异,便于后续综合评价。

学生编号 数学成绩(原始) 语文成绩(原始)
1 120 96
2 90 60
3 150 120
4 60 48
5 105 84

步骤1:计算各特征维度的最值

分别针对"数学成绩"和"语文成绩"两个维度,计算各自的最小值(X)和最大值(X):

  • 数学成绩维度 :原始数据为120,90,150,60,105

    X = 60(学生4的成绩)

  • X = 150(学生3的成绩)

  • X-X = 150-60 = 90

语文成绩维度 :原始数据为96,60,120,48,84

X = 48(学生4的成绩)

X = 120(学生3的成绩)

X-X = 120-48 = 72

步骤2:逐样本逐维度计算归一化值

以学生1为例,演示计算过程:

  • 数学成绩归一化:X=120,代入公式得 (120-60)/90 = 60/90 ≈ 0.67

  • 语文成绩归一化:X=96,代入公式得 (96-48)/72 = 48/72 ≈ 0.67

按此方法计算所有学生的归一化成绩,结果如下表:

学生编号 数学成绩(归一化) 语文成绩(归一化) 综合成绩(两科均值)
1 ≈0.67 ≈0.67 0.67
2 (90-60)/90≈0.33 (60-48)/72≈0.17 0.25
3 (150-60)/90=1.00 (120-48)/72=1.00 1.00
4 (60-60)/90=0.00 (48-48)/72=0.00 0.00
5 (105-60)/90≈0.50 (84-48)/72≈0.50 0.50

步骤3:结果分析

归一化前,数学成绩的绝对分值普遍高于语文成绩(因满分更高),直接计算均值会偏向数学成绩;归一化后,两科成绩均处于0,1区间,尺度统一,综合成绩能更公平地反映学生的整体水平。

三、代码实现案例(Python+NumPy)

针对上述学生成绩数据,通过代码自动化实现Min-Max归一化,可快速处理大规模数据:

python 复制代码
import numpy as np

# 1. 准备原始数据(行:学生,列:数学、语文)
raw_data = np.array([[120, 96],
                     [90, 60],
                     [150, 120],
                     [60, 48],
                     [105, 84]])

# 2. 定义Min-Max归一化函数(默认映射到[0,1])
def min_max_normalization(data, target_min=0, target_max=1):
    # 计算每列(每个特征)的最小值和最大值
    data_min = data.min(axis=0)  # 按列取最小,结果:[60, 48]
    data_max = data.max(axis=0)  # 按列取最大,结果:[150, 120]
    # 避免分母为0(若某特征所有值相同)
    denominator = data_max - data_min
    denominator[denominator == 0] = 1e-8  # 替换为极小值
    # 应用归一化公式
    normalized_data = target_min + (data - data_min) * (target_max - target_min) / denominator
    return normalized_data, data_min, data_max

# 3. 执行归一化
normalized_data, data_min, data_max = min_max_normalization(raw_data)

# 4. 输出结果
print("原始数据:")
print(raw_data)
print("\n归一化后数据([0,1]区间):")
print(np.round(normalized_data, 2))  # 保留2位小数
print("\n各特征最小值:", data_min)
print("各特征最大值:", data_max)

代码运行结果:

text 复制代码
原始数据:
[[120  96]
 [ 90  60]
 [150 120]
 [ 60  48]
 [105  84]]

归一化后数据([0,1]区间):
[[0.67 0.67]
 [0.33 0.17]
 [1.   1.  ]
 [0.   0.  ]
 [0.5  0.5 ]]

各特征最小值: [60 48]
各特征最大值: [150 120]

四、关键注意事项

  • 对异常值敏感:若数据中存在极端异常值(如某学生数学考0分),会导致X或X偏差极大,归一化结果失真。建议先处理异常值(如用中位数替换)再归一化。

  • 训练集与测试集一致性:建模时,需用训练集的X和X对测试集进行归一化,而非单独计算测试集的最值,避免数据泄露。

  • 分母为0处理:若某特征所有样本值相同(如所有学生语文都考80分),会导致分母为0,需在代码中添加容错处理(如替换为极小值)。

(注:文档部分内容可能由 AI 生成)

相关推荐
枫叶林FYL几秒前
【群体智能集群控制工程实践】第3章 一致性协同算法
算法
TechWayfarer2 分钟前
Cloudflare 9·15新政倒计时:用IP风险画像识别AI爬虫,防止误伤Googlebot
网络·人工智能·爬虫·python·tcp/ip·网络安全
Anhty11 分钟前
2026九月最新变声器测评:iOS安卓双端适配,低延迟运行更稳定
android·人工智能·功能测试·ios·智能手机
禹凕19 分钟前
滑动窗口算法实战指南
python·算法
DisonTangor26 分钟前
【腾讯混元雪耻归来】 Hy4 preview:770B 参数 MoE 旗舰模型,1M 上下文全面开源
人工智能·算法·开源·aigc·腾讯云·腾讯云ai代码助手
luckystar513~33 分钟前
Hermes 实战 :系列收官/生产化——安全审计与运维
运维·人工智能·安全·agent·智能体开发·hermes实战·智能体网关
Mickey Q1 小时前
【深度学习】数值稳定性和模型初始化
人工智能·深度学习
冬奇Lab1 小时前
Code Agent 解剖(20):从零扩展——给 agent 加一个新工具
人工智能·开源
论文复现现场1 小时前
RTX 4090 24GB 能跑 Qwen3.8-27B 吗?单卡显存计算与云端部署指南
人工智能·python·云计算·llama·gpu算力
七牛云行业应用1 小时前
Harness Engineering 是什么:从“写提示词“到“设计 Agent 边界“的工程方法论
人工智能·agent·ai编程