Этот вопрос касается того, как децентрировать и «восстановить» данные в более низком измерении после выполнения PCA.
Я делаю простой анализ основных компонентов с sklearn. Насколько я понимаю, реализация должна позаботиться о (1) центрировании данных при создании компонентов и (2) децентрализации данных после преобразования. Однако после преобразования данные все еще центрируются. Как я могу спроецировать данные в пространство меньшей размерности, сохранив характеристики исходных данных? Учитывая, что я делал бы уменьшение размерности для данных большой размерности, у меня не было бы подходящего среднего значения для каждого главного компонента, как это можно получить?
Уменьшение 3-х измерений до 2-х измерений:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
X = np.array([[-1, -1, -1], [-2, -1, -1], [-3, -2, -3], [1, 1, 1], [2, 1, 2], [3, 2, 3]]) + 3
X.shape
(6, 3)
fig = plt.figure(figsize=(10, 8), dpi= 80, facecolor='w', edgecolor='k')
ax = fig.add_subplot(111, projection='3d')
ax.scatter(X[:,0], X[:,1],X[:,2], '*')
plt.title('original')
plt.show()
PCA с 2 компонентами:
pca = PCA(n_components=2)
pca.fit(X)
X_trans =pca.transform(X)
X_trans.shape
(6, 2)
plt.plot(X_trans[:,0], X_trans[:,1], '*')
plt.show()
На этом этапе я хотел бы «восстановить» мои данные в этом более низком измерении, чтобы значения точек данных соответствовали исходным данным. Он по-прежнему должен иметь только 2 измерения, но не центрироваться вокруг среднего.
Выполнение обратного преобразования, как предлагается ниже, фактически возвращает меня к трехмерному измерению.
X_approx = pca.inverse_transform(X_trans)
X_approx.shape
(6, 3)
Я хочу оставаться в двух измерениях, но при этом мои данные должны быть максимально приближены к исходной форме и не должны быть сосредоточены на среднем значении.
pca.fit(X)
, но затем вам нужно применитьpca
к исходным данным, чтобы преобразовать их вX_trans
с помощьюtransform
. После преобразования вы можете преобразовать обратно к исходным данным с помощьюinverse_transform
20.03.2019