在python上数据归一化后怎样还原呢?

才接触Pybrain。 看到各位大佬们都会把原始数据进行归一化,再处理。可是都没有人讲怎样把归一化的数据还原回来。 目前可找到的方法就只有matlab…
关注者
39
被浏览
183,340

9 个回答

用scaler.inverse_transform()就可以还原。


例如:

scaler = sklearn.preprocessing.StandardScaler().fit(train)
test_S = scaler.transform(test)

test1 = scaler.inverse_transform(test_S)


这时 test1 应该和 test 是一样的。

题主问的是怎样还原predict的数据。

假如你用下面这个转换器对测试集(X_test)进行归一化:

standardizer = StandardScaler()
standardizer.fit(X_train)

X_test_std = standardizer.transform(X_test)

则可以得到这个转换器所依据数据集(X_train)的均值和标准差:

mean_X, std_X = standardizer.mean_, standardizer.scale_

因为predict的是测试集数据,所以可以依据测试集的转换规则对predict的数据(X_predict)反归一化:

predict = X_predict * std_X[None, :] + mean_X[None, :]

注:

  1. 这里的数据矩阵默认是numpy array of shape [n_samples, n_features],即行是样本,列是特征;
  2. StandardScaler()方法应该叫“z-score标准化”,而不是归一化。但有时大家都是混着叫的。