任何不正确的措辞,请提前道歉。我没有找到答案的原因可能是因为我没有使用正确的术语。
我有一个看起来像
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_mean
和with_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