Я столкнулся с кодом, который получает тензор с формой [A, B] и уменьшает размер B до N, следовательно, форма [A, N] ─ здесь N является параметром whitenv
в функции be , Однако я немного растерялся в том, что на самом деле делает код.
Что я могу понять, так это то, что он загружает предварительно обученный PCA и получает только основные компоненты [: N] и выполняет точечный продукт с оригинальный тензор.
(1) Что делает эта строка X = X - pca.mean_
? (2) Что на самом деле pca.whiten
? (3) Что такое отбеливать? Может кто-нибудь указать мне ссылку для чтения?
def transform(pca, X, whitenp=0.5, whitenv=None, whitenm=1.0, use_sklearn=True):
if use_sklearn:
# https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/decomposition/base.py#L99
if pca.mean_ is not None:
X = X - pca.mean_
X_transformed = np.dot(X, pca.components_[:whitenv].T)
if pca.whiten:
X_transformed /= whitenm * np.power(pca.explained_variance_[:whitenv], whitenp)
else:
X = X - pca['means']
X_transformed = np.dot(X, pca['W'])
return X_transformed