首页 > 解决方案 > 是否有支持数据样本的 Min-Max 和 Sum 缩放的 python 包?

问题描述

我一直在寻找一个 python 包/命令,它能够使用预定义的最小值、最大值和要缩放的样本的总和来缩放给定的数据样本。我尝试使用 sklearn.preprocessing 包的 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

或任何其他预定义的总和。本质上,最小值和最大值之间的值必须相应地缩放以匹配总和而不违反最小值和最大值约束。我已经在一个商业工具中做这种练习很长时间了,不幸的是,它不允许我深入了解底层的公式。任何关于如何进行的建议都将非常受欢迎。

标签: pythonscikit-learn

解决方案


也许这行得通,

scaled_sample/scaler.scale_

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


推荐阅读