预处理模块还提供了一个实用程序类 StandardScaler,它实现了Transformer API以计算均值 和训练集上的标准差,以便以后可以 在测试集上重新应用相同的转换。 http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.StandardScaler.html#sklearn.preprocessing.StandardScaler.fit_transform
转换数据集时,您要对算法进行运算,如何将结果链接回原始数据集?
例如
data = [[0, 0], [0, 0], [1, 1], [1, 1]]
print(data);
-->[[0, 0], [0, 0], [1, 1], [1, 1]]
myData = StandardScaler().fit_transform(data)
print(myData);
-->[[-1. -1.]
[-1. -1.]
[ 1. 1.]
[ 1. 1.]]
在myData上运行算法(无监督)时,如果在运行之前更改了该数据集,如何解释结果?例如。在myData上运行聚类算法时,并没有对原始数据进行聚类。
答案 0 :(得分:1)
应用inverse_transform
返回原始数据:
from sklearn.preprocessing import StandardScaler
import numpy as np
data = [[0, 0], [0, 1], [1, 0], [1, 1]]
scaler = StandardScaler()
myData = scaler.fit_transform(data)
restored = scaler.inverse_transform(myData)
assert np.allclose(restored, data) # check we got the original data back
请注意StandardScaler
的实例如何存储在变量中以供以后使用。拟合后,此实例包含重复或撤消转换所需的所有信息。
现在,如果您在myData
上执行了聚类,则可以将聚类原型(中心或从聚类算法中获得的任何结果)传递到scaler.inverse_transform
,以在原始数据空间中获得聚类。 / p>