Обычно преобразование PCA легко инвертируется:
import numpy as np
from sklearn import decomposition
x = np.zeros((500, 10))
x[:, :5] = random.rand(500, 5)
x[:, 5:] = x[:, :5] # so that using PCA would make sense
p = decomposition.PCA()
p.fit(x)
a = x[5, :]
print p.inverse_transform(p.transform(a)) - a # this yields small numbers (about 10**-16)
Теперь, если мы попытаемся добавить параметр whiten = True, результат будет совершенно другим:
p = decomposition.PCA(whiten=True)
p.fit(x)
a = x[5, :]
print p.inverse_transform(p.transform(a)) - a # now yields numbers about 10**15
Итак, поскольку я не нашел других методов, которые бы сделали трюк, я понял, как можно получить исходное значение a? Или это вообще возможно? Большое спасибо за любую помощь.