如何缩放(-1,1)范围内的数据,而不是包含数据

时间:2017-07-17 18:51:58

标签: python-3.x normalization preprocessor minmax

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

1 个答案:

答案 0 :(得分:0)

这似乎是一个奇怪的问题,因为通常缩放是包容性的 - 根据定义,缩放到(lower_bound, upper_bound)意味着数据集中最小的东西被映射到lower_bound而最大的映射到upper_bound因此,你想要一个独有的范围是有点矛盾的,因为那时范围的“最大值”没有映射到数据中的任何东西。

这就是为什么没有这样做的功能 - 缩放到范围始终是包容性的。我会仔细考虑为什么你需要一个独特的缩放 - 即你是否真的这样做。

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

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

这在数学上更具有可疑性,因为它会人为地“推入”分布的末尾,但是对于大于(-1 + eps)且小于(1 - eps)的每个值,它将保持映射不变。 / p>