如何使用sklearn的MinMaxScaler以自定义值为参照完成数据缩放
两种更简便的实现方案,都不需要修改原数据集
方案1:直接手动计算(最轻量化,无需依赖sklearn内部逻辑)
MinMaxScaler的核心缩放公式非常简单,你完全可以自己实现,直接代入自定义的上下限即可:
import numpy as np # 原始数据 raw_data = np.array([[45724.25], [45570.08], [45584.31], [45549.79]]) # 自定义参照上下限,这里最小值默认用0,你可以按需修改 custom_min = 0 custom_max = 100000 # 直接计算缩放结果 scaled_data = (raw_data - custom_min) / (custom_max - custom_min)
方案2:复用MinMaxScaler实例(适合需要和sklearn pipeline/其他组件兼容的场景)
你可以手动设置MinMaxScaler的内部统计属性,跳过从输入数据自动统计最大/最小值的步骤,无需修改原数据:
from sklearn.preprocessing import MinMaxScaler import numpy as np raw_data = np.array([[45724.25], [45570.08], [45584.31], [45549.79]]) scaler = MinMaxScaler(feature_range=(0,1)) # 手动配置缩放用的基准值 scaler.data_min_ = np.array([0]) # 对应特征的最小值基准 scaler.data_max_ = np.array([100000]) # 对应特征的最大值基准 scaler.n_samples_seen_ = len(raw_data) scaler.n_features_in_ = 1 # 你的特征数量 # 直接调用transform即可,无需先fit scaled_data = scaler.transform(raw_data)
生成的scaler实例可以复用,后续新数据可以直接用同一基准缩放,和常规fit得到的scaler用法完全一致。
如果你需要自定义最小值基准,只需要对应修改上面的
custom_min或者scaler.data_min_取值即可,逻辑不变。
内容的提问来源于stack exchange,提问作者Antonios Chasouras
相关产品推荐
相关产品推荐

