在运行算法之前fit_transform数据

时间:2018-11-04 12:52:42

标签: python machine-learning scikit-learn

  

预处理模块还提供了一个实用程序类   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上运行聚类算法时,并没有对原始数据进行聚类。

1 个答案:

答案 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>