2017-07-17 110 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)的映射保持不變。