You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何以参考Pareto前沿为基准将近似前沿归一化到0-1区间

问题分析

你之前的实现两次调用了fit_transform()方法,相当于分别拟合了两套独立的最值作为归一化基准,参考前沿和近似前沿的归一化尺度不统一,不符合多目标质量指标的计算要求。

实现方案

MinMaxScaler的fit()方法会记录传入数据集各维度的最大、最小值,后续所有数据集调用transform()时就会复用这套基准做归一化,不需要重复拟合。
完整实现代码如下:

import numpy as np
from sklearn.preprocessing import MinMaxScaler

# 原始数据定义
reference_front = np.array([[0.5, 2.0], [1, 1.0], [1.2, 0.833], [2.3, 0.435], [3, 0.333]])
approximation_front = np.array([[0.8, 2.5], [1.0, 2.0], [2.1, 0.952], [2.8, 0.714]])

# 仅用参考前沿拟合归一化基准
min_max_scaler = MinMaxScaler()
min_max_scaler.fit(reference_front)

# 用同一套基准归一化两类前沿
reference_front_norm = min_max_scaler.transform(reference_front)
approximation_front_norm = min_max_scaler.transform(approximation_front)

# 参考点归一化(修复原代码中参考点第二维度取值错误)
reference_point_raw = [
    max(approximation_front[:, 0]),
    max(approximation_front[:, 1])
]
reference_point_norm = min_max_scaler.transform(np.array(reference_point_raw).reshape(1, -1))[0]
注意事项
  • 如果近似前沿中存在超出参考前沿最值范围的点,归一化后数值会超出[0,1]区间,属于符合指标计算的常规合理情况
  • 若业务要求强制所有归一化结果必须落在[0,1]区间,可对近似前沿归一化结果添加裁剪逻辑:
approximation_front_norm = np.clip(approximation_front_norm, 0, 1)

内容的提问来源于stack exchange,提问作者vp_050

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 01:24:03