是否有支持数据样本的最小-最大和求和缩放的python包



我一直在寻找一个python包/命令,它能够用预定义的最小值、最大值和总和来缩放给定的数据样本。我尝试使用sklearn.preprrocessing包的MinMaxScaler((函数,如下例所示。

给定基本样本:

from sklearn.preprocessing import MinMaxScaler
import pandas as pd
base_sample = pd.DataFrame([5 , 20 , 30 , 35, 45 , 60])
sample_min = 10
sample_max = 50
scaler = MinMaxScaler(feature_range = (sample_min , sample_max))

scaled_sample = scaler.fit_transform(base_sample)
print(scaled_sample)

生产:

[[10.        ]
[20.90909091]
[28.18181818]
[31.81818182]
[39.09090909]
[50.        ]]

带总和:

print(scaled_sample.sum())
180.0

然而,我需要的是一个命令,它能够用预定义的不同总和来完成上述操作,例如基于原始样本的总和:

print(base_sample.sum())
195

或任何其他预定义的总和。本质上,最小值和最大值之间的值必须相应地缩放,以在不违反最小值和最小值约束的情况下匹配总和。很长一段时间以来,我一直在一个商业工具中进行这种练习,不幸的是,这个工具不允许我深入了解潜在的配方。我们欢迎就如何进行提出任何建议。

对于线性变换,这是不可能的。不能将矢量的值转换为任意的最小值、最大值和和。你可以通过非线性变换来实现这一点,因为你可以比其他权重更上/更下地缩放某些权重,以在调整和的同时控制极值(反之亦然(。这将成为一个优化问题,它有无限多的答案,因为你可以用变换后的向量做任何事情。您可以通过设置转换函数来限制这种情况。

也许这行得通,

scaled_sample/scaler.scale_

scaler.scale_相当于(max - min) / (X.max(axis=0) - X.min(axis=0))

最新更新