Python 如何从缩放数据重建原始数据?
我有一些数据,我用scikit learn进行了缩放。 缩放后,我希望恢复原始数据。这可能吗?如果没有,如何从原始数据中获得对应关系 这里有一个玩具的例子Python 如何从缩放数据重建原始数据?,python,machine-learning,scipy,scikit-learn,Python,Machine Learning,Scipy,Scikit Learn,我有一些数据,我用scikit learn进行了缩放。 缩放后,我希望恢复原始数据。这可能吗?如果没有,如何从原始数据中获得对应关系 这里有一个玩具的例子 from sklearn.datasets import load_iris from sklearn.preprocessing import scale iris = load_iris() X = iris.data X_scale = scale(X) print X[:4] print X_scale[:4] 生产 [[ 5.1
from sklearn.datasets import load_iris
from sklearn.preprocessing import scale
iris = load_iris()
X = iris.data
X_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的缩放工作原理的更多信息,请参阅以下文档。要了解更多有关特征缩放的一般信息,可以从开始。最常见的特征缩放方法之一是将数据集的平均值设置为零,将标准偏差设置为一,从而缩放数据。这对于许多学习算法非常有用。这只需使用以下方法即可实现:
scaled_array = (original_array - mean_of_array)/std_of_array
在Sklearn中,每个数组列都以这种方式缩放。要找到原始数据,只需重新排列上述数据,或者只计算未标度数据中每列的标准偏差和平均值。然后,您可以随时使用它将缩放数据转换回原始数据
有关Sklearn的缩放工作原理的更多信息,请参阅以下文档。要了解更多有关功能扩展的一般信息,可以从开始。MarkyD43为这个问题提供了一个很好的答案。下面是将数据转换回原始版本的代码版本
from sklearn.datasets import load_iris
from sklearn.preprocessing import scale
iris = load_iris()
X = iris.data
mean_of_array = X.mean(axis=0)
std_of_array = X.std(axis=0)
X_scale = scale(X)
X_original = (X_scale * std_of_array) + mean_of_array
print X[:4]
print X_original[: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]]
[[ 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]]
MarkyD43为这个问题提供了一个很好的答案。下面是将数据转换回原始版本的代码版本
from sklearn.datasets import load_iris
from sklearn.preprocessing import scale
iris = load_iris()
X = iris.data
mean_of_array = X.mean(axis=0)
std_of_array = X.std(axis=0)
X_scale = scale(X)
X_original = (X_scale * std_of_array) + mean_of_array
print X[:4]
print X_original[: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]]
[[ 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]]
谢谢,这是一个很好的答案。谢谢,这是一个很好的答案。