使用MinMaxScaler处理数组并获取后续可用的缩放参数:缺失参数问题
问题解答
首先纠正你的误解:MinMaxScaler的缩放参数(scale_、min_)是按特征维度(列)计算的,你的输入数组data形状是(8, 412719),在sklearn的默认逻辑里,这代表8个样本、412719个特征,所以scale_长度为412719是完全正确的,并没有缺失参数。你觉得“缺失7列”是把样本数和特征数搞混了。
获取数组形式的缩放参数
scale_本身就是numpy数组类型,不是普通列表。你可以直接调用获取:
scaler = MinMaxScaler() scaled_data = scaler.fit_transform(data) # 获取数组形式的缩放参数 scale_array = scaler.scale_ # 形状为(412719,)的numpy数组 min_array = scaler.min_ # 同样是(412719,)的numpy数组
如果需要将其转换为二维数组(比如(412719, 1)),可以用reshape调整:
scale_2d = scaler.scale_.reshape(-1, 1)
后续复用归一化逻辑
如果要对新数据执行相同的归一化,直接调用scaler.transform(new_data)即可,无需手动用参数计算。如果非要手动实现归一化逻辑,公式如下:
new_scaled = (new_data - scaler.min_) / scaler.scale_
注意新数据的特征数必须和训练时的412719保持一致。
内容的提问来源于stack exchange,提问作者Boston
相关产品推荐
相关产品推荐

