我在下面给出了一段简单的代码,它根据行对数组进行规范化。
import numpy as np
from sklearn import preprocessing
X = np.asarray([[-1,2,1],
[4,1,2]], dtype=np.float)
X_normalized = preprocessing.normalize(X, norm='l2')
你能帮助我再次将X标准化转换为X吗?
答案 0 :(得分:0)
您无法从标准化版本中恢复X.考虑几个数据集的简单情况,每个数据集有2个不同的元素:
[3, 4]
[-18, 20]
[0, 0.0001]
每个都标准化为相同的数据集:
[-1, 1]
映射不是双射:它是多对一的。因此,它不是唯一可逆的。
但是,您可以使用几种简单的技术恢复原始集:
答案 1 :(得分:0)
https://scikit-learn.org/stable/modules/classes.html#module-sklearn.preprocessing中的所有缩放器都具有专门为此设计的inverse_transform方法。
例如,要使用MinMaxScaler缩放和取消缩放DataFrame,可以执行以下操作:
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
scaled = scaler.fit_transform(df)
unscaled = scaler.inverse_transform(scaled)
请记住,转换函数(以及fit_transform)返回的是numpy.array,而不是pandas.Dataframe。
[Refrence][1]
[1]: https://stackoverflow.com/questions/43382716/how-can-i-cleanly-normalize-data-and-then-unnormalize-it-later/43383700