将数据缩放到 python 中的特定范围
scaling data to specific range in python
我想将大小为 [192,4000] 的数组缩放到特定范围。我希望将每一行 (1:192) 重新缩放到特定范围,例如(-840,840)。我运行一个很简单的代码:
import numpy as np
from sklearn import preprocessing as sp
sample_mat = np.random.randint(-840,840, size=(192, 4000))
scaler = sp.MinMaxScaler(feature_range=(-840,840))
scaler = scaler.fit(sample_mat)
scaled_mat= scaler.transform(sample_mat)
这打乱了我的矩阵范围,即使我的原始矩阵的最大值和最小值完全相同。我不知道哪里出了问题,知道吗?
您可以手动执行此操作。
它是minmax归一化数据的线性变换。
interval_min = -840
interval_max = 840
scaled_mat = (sample_mat - np.min(sample_mat) / (np.max(sample_mat) - np.min(sample_mat)) * (interval_max - interval_min) + interval_min
MinMaxScaler 支持 feature_range
初始化参数,可以在一定范围内产生输出。
scaler = MinMaxScaler(feature_range=(1, 2))
将产生 (1,2)
范围内的输出
我想将大小为 [192,4000] 的数组缩放到特定范围。我希望将每一行 (1:192) 重新缩放到特定范围,例如(-840,840)。我运行一个很简单的代码:
import numpy as np
from sklearn import preprocessing as sp
sample_mat = np.random.randint(-840,840, size=(192, 4000))
scaler = sp.MinMaxScaler(feature_range=(-840,840))
scaler = scaler.fit(sample_mat)
scaled_mat= scaler.transform(sample_mat)
这打乱了我的矩阵范围,即使我的原始矩阵的最大值和最小值完全相同。我不知道哪里出了问题,知道吗?
您可以手动执行此操作。 它是minmax归一化数据的线性变换。
interval_min = -840
interval_max = 840
scaled_mat = (sample_mat - np.min(sample_mat) / (np.max(sample_mat) - np.min(sample_mat)) * (interval_max - interval_min) + interval_min
MinMaxScaler 支持 feature_range
初始化参数,可以在一定范围内产生输出。
scaler = MinMaxScaler(feature_range=(1, 2))
将产生 (1,2)
范围内的输出