我有一组数据,使用scikit-learn进行了缩放处理。缩放后,我想恢复原始数据。这是可能的吗?如果不可能,我怎样才能从原始数据中找到对应关系?
这里是一个示例代码
from sklearn.datasets import load_irisfrom sklearn.preprocessing import scaleiris = load_iris()X = iris.dataX_scale = scale(X)print X[:4]print X_scale[:4]
输出结果为
[[ 5.1 3.5 1.4 0.2] [ 4.9 3. 1.4 0.2] [ 4.7 3.2 1.3 0.2] [ 4.6 3.1 1.5 0.2]][[-0.90068117 1.03205722 -1.3412724 -1.31297673] [-1.14301691 -0.1249576 -1.3412724 -1.31297673] [-1.38535265 0.33784833 -1.39813811 -1.31297673] [-1.50652052 0.10644536 -1.2844067 -1.31297673]]
如何从第二个数据中恢复原始数据?
回答:
特征缩放方法中最常见的一种是将数据集的均值设为零,标准差设为一。这种方法对许多学习算法非常有用。实现这一目标的简单方法如下:
scaled_array = (original_array - mean_of_array)/std_of_array
在Sklearn中,每列数据似乎都是以这种方式进行缩放的。要找回原始数据,只需重新排列上述公式,或者直接计算未缩放数据中每列的标准差和均值。然后,你可以随时使用这些值将缩放后的数据转换回原始数据。
关于Sklearn的缩放方法如何工作的更多信息,请查看这里。要了解更多关于特征缩放的一般知识,维基百科页面是一个很好的起点。