2017-07-17 111 views
0

我正在使用python预处理来缩放我的数据。我使用了具有feature_range =( - 1,1)参数的MinMaxScaler。但是这会返回[-1,1]范围内的数据。我需要(-1,1)范围内的数据。我该怎么做?如何在(-1,1)范围内独占而不是包含范围内的数据

+0

我不确定这些范围是如何不同的。是说你需要一个元组 - (-1,1)而不是列表 - [-1,1]?你可以使用'tuple(list)'来进行转换。 –

+0

@MarkM符号是数学集合包含'[]'和排除'()'。 OP说他正在得到'(-1,1)'范围内的值,但是希望'(-1,1)'独占 – MyStackRunnethOver

+0

Gotcha谢谢@ 4o2 –

回答

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)的映射保持不变。