Может кто-нибудь кратко объяснить мой код PCA (scikit-learn)? - PullRequest
0 голосов
/ 13 февраля 2020

Я столкнулся с кодом, который получает тензор с формой [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
...