在 -1 和 1 之间缩放数据以零为中心


对于

任何不正确的措辞,请提前道歉。我没有找到答案的原因可能是因为我没有使用正确的术语。

我有一个看起来像

0        -0.004973    0.008638   0.000264     -0.021122   -0.017193
1        -0.003744    0.008664   0.000423     -0.021031   -0.015688
2        -0.002526    0.008688   0.000581     -0.020937   -0.014195
3        -0.001322    0.008708   0.000740     -0.020840   -0.012715
4        -0.000131    0.008725   0.000898     -0.020741   -0.011249
5         0.001044    0.008738   0.001057     -0.020639   -0.009800
6         0.002203    0.008748   0.001215     -0.020535   -0.008368
7         0.003347    0.008755   0.001373     -0.020428   -0.006952
8         0.004476    0.008758   0.001531     -0.020319   -0.005554
9         0.005589    0.008758   0.001688     -0.020208   -0.004173
10        0.006687    0.008754   0.001845     -0.020094   -0.002809
...

对于每一列,我想将数据缩放到该列的最小值和最大值的 -1.0 和 1.0 之间的浮点数。
我已经尝试过scikit learn的最小最大缩放器scaler = MinMaxScaler(feature_range = (-1, 1))但是某些值因此改变了符号,我需要保留。

有没有办法将缩放"居中"在零上?

你试过使用 sklearn 的StandardScaler吗?

它具有with_meanwith_std选项,您可以使用它们来获取所需的数据。

将负值缩放到列的最小值并将正值缩放到列的最大值的问题在于,正数的刻度可能与正数的刻度不同。如果要对负值和正值使用相同的刻度,请尝试以下操作:

def zero_centered_min_max_scaling(dataframe):
    """
    Scale the numerical values in the dataframe to be between -1 and 1, preserving the
    signal of all values.
    """
    df_copy = dataframe.copy(deep=True)
    for column in df_copy.columns:
        max_absolute_value = df_copy[column].abs().max()
        df_copy[column] = df_copy[column] / max_absolute_value
    return df_copy

相关内容

  • 没有找到相关文章

最新更新