如何在 (-1, 1) 范围内缩放数据,不包括在内

how to scale data in a range of (-1, 1) exclusive, instead of inclusive

我正在使用 python 预处理来扩展我的数据。我使用参数为 feature_range=(-1, 1) 的 MinMaxScaler。但是这个returns数据在[-1,1]范围内。我需要 (-1,1) 范围内的数据。我该怎么做?

这似乎是一个奇怪的问题,因为一般来说缩放是包容性的——根据定义,缩放到 (lower_bound, upper_bound) 意味着数据集中最小的东西映射到 lower_bound,最大的映射到 upper_bound,所以说你想要一个独占范围有点矛盾,因为范围的 "maximum" 不会被数据中的任何内容映射到。

这就是为什么没有这样做的功能 - 缩放到一个范围总是包含在内。我会仔细考虑您为什么需要独家缩放 - 即您是否真的需要。

也就是说,这里有一些想法,它们在数学上都是可疑的(它们会引入一些错误):

1.) feature_range = (-1 + eps, 1 - eps):其中 eps = .000000000000001 或适当小的数字。当数字 eps 接近 0 时,将可接受的范围缩小任意小的数字 近似 一个排他范围。

2.)

for entry in data:
    if entry is 1:
        entry = entry - eps
    else if entry is -1:
        entry = entry + eps

这在数学上更加可疑,因为它会人为地 "push in" 分布的末端,但对于大于 (-1 + eps) 且小于 [=18= 的每个值,它会使映射保持不变].